NPM的介绍和使用

初识npm 

        npm是Node.js世界里最流行的包管理器,用于Node模块的发布、安装和管理。npm是Node Package Manager(Node包管理器)的缩写。

        利用npm可以非常方便地安装各种第三方包,不需要关心包之间的各种依赖关系,因为npm会自动处理这些繁琐的工作。这极大地简化了项目的配置,使我们能更加专注于编码。

全局安装和本地安装

npm包可以全局安装,也可以本地安装。

        全局安装的模块可以在系统任何地方使用,本地安装的模块只能在当前项目中使用。一般来说,我们会把一些全局需要的工具模块安装为全局模块,而项目依赖则会本地安装。

npm install -g gulp         # 全局安装gulp
npm uninstall gulp -global  # 卸载全局安装的gulp
npm install gulp --save     # 本地安装gulp并保存到package.json的dependencies

npm版本管理

        npm支持语义化版本号,版本号由X.Y.Z组成,分别代表主版本号、次版本号和补丁版本号。符合语义化的版本号可以通过版本号来判断新版本带来了什么样的改变。

我们可以通过下面的命令来管理npm包的版本:

npm install express@4.16.4   # 安装指定版本
npm update express          # 将express更新到最新版本
npm outdated                # 检查包是否已经过时,需要更新

npm的基本使用

npm的常见命令有下面几个:

  • npm init - 交互式创建一个package.json文件
  • npm install - 安装依赖包
  • npm uninstall - 卸载依赖包
  • npm run - 执行package.json里定义的脚本
  • npm publish - 发布包到npm仓库

我们先通过npm init命令来创建一个package.json文件:

npm init

然后根据提示输入项目信息,就可以生成一个包含基本信息的package.json文件。

如果想跳过交互,可以直接带上-y参数:

npm init -y

有了package.json后,我们就可以安装各种第三方包了,比如安装express:

npm install express

这样express包就安装到了项目中,而且所有的依赖都已经自动处理好了

package.json详解

package.json记录了当前项目的配置信息及模块依赖,可以通过下面的命令修改配置:

npm config set init-author-name "Your name"
npm set init-license "MIT"

对于模块依赖有一个dependencies字段,我们通过下面的命令安装的模块默认都会写入此字段并加上版本号:

npm install express --save

还有一个devDependencies字段,用于记录一些开发环境依赖,这些依赖不会部署到生产环境:

npm install gulp -D

npm自定义脚本

我们可以在package.json的scripts字段定义一些自定义脚本:

"scripts": {"start": "node index.js","test": "jest"  
}

这样通过npm run命令就可以非常方便地运行这些脚本:

npm run test
npm start

总结

        npm为JavaScript的项目管理和第三方模块管理提供了极大的便利。正确理解和使用npm是每一位Node.js开发者必备的技能。

        这篇博客深入介绍了npm的更多高级应用,相信对大家使用npm管理项目依赖非常有帮助!npm的功能远不止这些,希望大家也动手去多实践探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/284463.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows10-tdengine的安装及使用

win10-tdengine的安装及使用 一、下载及安装配置1.1 下载安装1.2 配置1.3 关闭防火墙和开放端口1.3.1 关闭防火墙1.3.2 开放6030端口 二、启动及关闭服务2.1 启动tdengine服务2.2 关闭tdengine服务2.2 开机自启动配置 四、可视化工具五、TDengine 命令行(CLI&#x…

mybatisplus使用雪花id通过swagger返回ID时精度丢失问题

在使用mybatisplus自带雪花的时候会发现返回的ID是19位的长度,因此在通过swagger页面展示的时候会发现后端返回的和页面展示的ID不一致问题。是因为精度丢失的问题。因此需要更改雪花ID的长度跟踪进去:发现是DefaultIdentifierGenerator类实现了Identifi…

深入理解JVM虚拟机第三十三篇:详解JVM学习路线与内容回顾

😉😉 欢迎加入我们的学习交流群呀! ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring等等很多应用和源码级别的高质量视频和笔记资料,你想学的我们这里都有! 🥭🥭3:QQ群:583783824 📚📚 工作VX:BigTreeJava 拉你…

基于urllib库的网页数据爬取

实验名称: 基于urllib库的网页数据爬取 实验目的及要求: 【实验目的】 通过本实验了解和掌握urllib库。 【实验要求】 1. 使用urllib库爬取百度搜索页面。 2. 使用urllib库获取百度搜索的关键字搜索结果(关键字任选)。 实验原理及…

孩子还是有一颗网安梦——Bandit通关教程:Level 15 → Level 16

🕵️‍♂️ 专栏《解密游戏-Bandit》 🌐 游戏官网: Bandit游戏 🎮 游戏简介: Bandit游戏专为网络安全初学者设计,通过一系列级别挑战玩家,从Level0开始,逐步学习基础命令行和安全概念…

WEB网页设计期末作业个人主页——基于HTML+CSS制作个人简介网站

这个个人主页是我在WEB网页设计课程期末作业中完成的。我使用HTML和CSS来制作这个网站,以介绍我自己和我的兴趣爱好。在这个网站上,您可以找到以下信息: 关于我自己的一些背景和个人信息 我的技能和工作经验 我所喜欢的一些书籍、电影和音…

CLIP 对比预训练 + 文字图像相似度:离奇调查,如何训练视觉大模型?

CLIP:如何训练视觉大模型? 对比预训练图像编码器文本编码器最大的亮点:zero-shot图像分类 CLIP论文地址:https://arxiv.org/pdf/2103.00020.pdf CLIP 对比学习 预训练 文字图像相似度。 对比预训练 传统方法训练视觉模型的方…

活动 | Mint Blockchain 赞助支持清迈 WAMOTOPIA 线下活动

在 2023 年的末尾,南洋清迈的土地上,瓦猫 2.0 正在从 Builders, Creators, Thinkers, Dreamers 的集体梦想中走来。新年到来之际,瓦猫社区即将在泰国清迈创造通往新世界的即兴 - 突现部落 Spontaneous pop-up Tribe:瓦猫托邦 Wamo…

JVM-11-运行时栈帧结构

“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual MachineStack)的栈元素。 栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回…

【深度学习】序列生成模型(二):束搜索

文章目录 序列生成束搜索理论基础算法步骤python实现 序列生成 在进行最大似然估计训练后的模型 p θ ( x ∣ x 1 : ( t − 1 ) ) p_\theta(x | \mathbf{x}_{1:(t-1)}) pθ​(x∣x1:(t−1)​),我们可以使用该模型进行序列生成。生成的过程是按照时间顺序逐步生成序…

掌动智能浅谈云网络流量分析的主要过程

在云计算时代,网络流量分析成为确保网络安全和性能的重要环节。随着企业和组织将应用和服务迁移到云平台,对云网络流量进行深入的分析变得至关重要。本文将介绍云网络流量分析的主要过程,以帮助读者更好地理解如何有效地监控和管理云环境中的…

C++笔记之system()用于在Qt中执行系统命令的习惯

C笔记之system()用于在Qt中执行系统命令的习惯 参考博文:qt-C笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景 code review! 文章目录 C笔记之system()用于在Qt中执行系统命令的习惯一.一般我用的int system( const char *command…