当前位置: 首页 > news >正文

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.jsonyarn.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 环境中确保依赖安装的一致性和可靠性。

快速安装依赖,避免不必要的检查和更新。


相关文章:

  • 国产GPU生态现状评估:从寒武纪到壁仞的编程适配挑战
  • DeepSeek与Napkin:信息可视化领域的创新利器
  • 安徽合肥京东自营代运营如何突围?
  • CSRF 请求伪造Referer 同源置空配合 XSSToken 值校验复用删除
  • 第3章 垃圾收集器与内存分配策略《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
  • FPGA练习———DDS波形发生器
  • Linux419 三次握手四次挥手抓包 wireshark
  • Dubbo(65)如何实现Dubbo的服务文档生成?
  • ThingsBoard3.9.1 MQTT Topic(3)
  • Python实现对目标Word文档进行自动化排版【4万字精讲】(14)
  • 玩转Docker | 使用Docker部署tududi任务管理工具
  • 【深度学习—李宏毅教程笔记】Transformer
  • verilog float mult
  • 详细的PyCharm安装教程
  • Java学习手册:Web 应用架构概述
  • B端APP设计:打破传统限制,为企业开启便捷新通道
  • 电脑 访问 github提示 找不到网页,处理方案
  • 第6章 类文件结构《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
  • 【机器学习-周总结】-第4周
  • 实用电脑工具,轻松实现定时操作
  • 商务部:中国加快推进服务业扩大开放综合试点为世界注入更多确定性
  • 讲座|在数字化时代,“记住”到底意味着什么
  • 日本首相石破茂向靖国神社献祭品
  • 十大券商看后市|A股下行波动风险有限,震荡中有望逐步抬升
  • 山西一国道发生塌陷,造成4车追尾2人死亡
  • 纪念沈渭滨︱志于道而游曳于士和氓间的晚年沈先生