npm 常用操作和配置
一、npm 核心操作
1. 初始化项目
npm init # 交互式创建 package.json
npm init -y # 跳过提问,直接生成默认 package.json
2. 安装依赖
npm install <package> # 安装包到本地 node_modules(生产依赖)
npm install <package> --save-dev # 安装为开发依赖(devDependencies)
npm install -g <package> # 全局安装(如命令行工具)
npm install # 根据 package.json 安装所有依赖
3. 卸载依赖
npm uninstall <package> # 卸载本地包
npm uninstall -g <package> # 卸载全局包
4. 更新依赖
npm update <package> # 更新指定包
npm update # 更新所有包(根据 package.json 版本规则)
npm outdated # 查看过时的包
5. 运行脚本
// package.json
{"scripts": {"start": "node app.js","dev": "nodemon app.js","test": "jest"}
}
npm run dev # 运行自定义脚本(如开发模式)
npm start # 直接运行 "start"(可省略 run)
npm test # 运行测试
二、配置管理
1. 全局配置
npm config list # 查看当前配置
npm config set <key> <value> # 修改配置(持久化到 ~/.npmrc)
常用配置项:
npm config set registry https://registry.npmmirror.com # 国内镜像(淘宝源)
npm config set prefix ~/.npm-global # 修改全局包安装路径
npm config set save-exact true # 安装时精确版本(不添加 ^ 或 ~)
2. 项目级配置
package.json
:定义项目元数据、依赖和脚本。.npmrc
:项目级配置文件(优先级高于全局配置)。
三、依赖版本管理符号
符号 | 含义 | 示例 |
---|---|---|
^1.2.3 | 允许更新次要版本和补丁 | ^1.x.x |
~1.2.3 | 仅允许更新补丁 | ~1.2.x |
1.2.3 | 严格锁定版本 | 精确匹配 |
latest | 安装最新版本 | 自动更新 |
四、实用技巧
1. 快速安装所有依赖
npm ci # 根据 package-lock.json 精确安装(适合 CI/CD 环境)
2. 清理缓存
npm cache clean --force # 强制清理缓存
3. 查看包信息
npm view <package> # 查看包详情
npm ls # 查看项目依赖树
npm ls -g --depth=0 # 查看全局安装的包
4. 安全审计
npm audit # 检查依赖漏洞
npm audit fix # 自动修复漏洞
五、常见问题
1. 权限问题(全局安装报错)
- 解决方案:
sudo npm install -g <package> # 临时使用管理员权限
# 或修改全局安装目录权限
mkdir ~/.npm-global
npm config set prefix ~/.npm-global
2. 镜像加速
- 临时使用镜像源:
npm install <package> --registry=https://registry.npmmirror.com
- 持久化配置:
npm config set registry https://registry.npmmirror.com
3. 版本冲突
- 使用
package-lock.json
或yarn.lock
锁定依赖版本。
4.npm install 和npm ci 的区别
用途
- npm install:
用于安装项目中的依赖包。
可以在开发过程中使用,适用于添加、更新或删除依赖。
会根据 package.json 和 package-lock.json(如果存在)来安装依赖。
- npm ci:
专门用于在持续集成(CI)环境中安装依赖。
假设项目的依赖是固定的,并且 package-lock.json 和 npm-shrinkwrap.json 文件已经存在且是最新的。
旨在实现快速、可靠和一致的依赖安装。
行为差异:依赖版本处理:
- npm install:
如果没有 package-lock.json,会生成一个新的。
如果有 package-lock.json,会根据其中的版本信息安装依赖,但可能会更新 package-lock.json 中的一些信息(例如,如果依赖有更新)。
- npm ci:
严格依赖 package-lock.json 或 npm-shrinkwrap.json 中的版本信息。
不会修改 package-lock.json,确保安装的依赖与锁文件中指定的版本完全一致。
安装速度:
npm ci 通常比 npm install 更快,因为它跳过了许多检查和更新步骤,直接安装锁文件中指定的版本。
清理 node_modules:
npm install:
默认情况下,不会删除现有的 node_modules 目录,只是更新或添加新的依赖。
npm ci:
总是先删除 node_modules 目录,然后重新安装所有依赖,确保环境是干净的。
使用场景
- npm install:
适用于本地开发环境,当你需要添加、更新或删除依赖时使用。
适用于需要灵活处理依赖变化的场景。
- npm ci:
适用于 CI/CD 管道,确保每次构建的环境都是一致的。
适用于需要快速、可靠安装依赖的场景,避免由于依赖变化导致的构建不一致问题。
总结
- 选择 npm install
在开发过程中添加或更新依赖。
允许依赖版本有一定的灵活性。
- 选择 npm ci
在 CI/CD 环境中确保依赖安装的一致性和可靠性。
快速安装依赖,避免不必要的检查和更新。