NPM的介绍和使用

初识npm

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

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

全局安装和本地安装

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

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

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

npm版本管理

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

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

bash 复制代码
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文件:

bash 复制代码
npm init

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

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

bash 复制代码
npm init -y

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

bash 复制代码
npm install express

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

package.json详解

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

bash 复制代码
npm config set init-author-name "Your name"
npm set init-license "MIT"

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

bash 复制代码
npm install express --save

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

bash 复制代码
npm install gulp -D

npm自定义脚本

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

bash 复制代码
"scripts": {
  "start": "node index.js",
  "test": "jest"  
}

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

bash 复制代码
npm run test
npm start

总结

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

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

相关推荐
空白诗几秒前
使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm
windows·macos·node.js·nvm
Rattenking4 分钟前
node - npm常用命令和package.json说明
前端·npm·json
Easonmax4 分钟前
【HTML5】html5开篇基础(1)
前端·html·html5
For. tomorrow8 分钟前
Vue3中el-table组件实现分页,多选以及回显
前端·vue.js·elementui
布瑞泽的童话35 分钟前
无需切换平台?TuneFree如何搜罗所有你爱的音乐
前端·vue.js·后端·开源
白鹭凡1 小时前
react 甘特图之旅
前端·react.js·甘特图
2401_862886781 小时前
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推
前端·c++·python·算法·游戏
书中自有妍如玉1 小时前
layui时间选择器选择周 日月季度年
前端·javascript·layui
Riesenzahn1 小时前
canvas生成图片有没有跨域问题?如果有如何解决?
前端·javascript