npm 常用命令及示例和解析


一、基础命令

1. 初始化项目

命令npm init
功能 :生成 package.json 文件,记录项目元数据和依赖。
示例

bash 复制代码
npm init -y  # 使用默认配置快速生成 package.json

解析

  • -y 参数会跳过交互式问答,直接生成默认配置文件。

2. 安装依赖

命令npm install(或 npm i
功能 :安装项目依赖包。
示例

bash 复制代码
npm install <package_name>      # 安装生产依赖(保存到 dependencies)
npm install <package_name> -D  # 安装开发依赖(保存到 devDependencies)
npm install <package_name> -g  # 全局安装包(如 `npm install -g nodemon`)

解析

  • -D(或 --save-dev):开发环境使用的工具(如 eslintwebpack)。
  • -g:全局安装后,可在任何目录下使用该包的命令(如 nodemon 启动服务)。
  • 指定版本npm install express@4.17.1

3. 卸载依赖

命令npm uninstall
功能 :卸载已安装的包并同步 package.json
示例

bash 复制代码
npm uninstall <package_name>    # 卸载本地依赖
npm uninstall <package_name> -g # 卸载全局依赖

解析

  • 卸载后,package.json 中对应的依赖项也会被移除。

4. 运行脚本

命令npm run
功能 :执行 package.json 中定义的脚本命令。
示例

bash 复制代码
npm run dev       # 执行 "dev" 脚本(如开发服务器)
npm run build     # 执行 "build" 脚本(如构建生产环境)
npm run test      # 执行测试脚本

解析

  • 脚本定义在 package.jsonscripts 字段中:

    json 复制代码
    "scripts": {
      "dev": "nodemon index.js",
      "build": "tsc"
    }

二、进阶命令

5. 更新依赖

命令npm update
功能 :更新项目依赖到最新版本(根据 package.json 中的版本范围)。
示例

bash 复制代码
npm update                # 更新所有依赖
npm update <package_name> # 更新指定包

解析

  • 结合语义化版本控制(如 ^1.2.3),只会更新兼容版本。

6. 查看依赖

命令npm list(或 npm ls
功能 :列出已安装的依赖包。
示例

bash 复制代码
npm list                 # 列出当前项目的依赖
npm list -g              # 列出全局安装的包
npm list --depth=0       # 仅显示顶级依赖

解析

  • 通过 --depth 参数控制显示层级深度。

7. 清理缓存

命令npm cache clean
功能 :清除 npm 缓存(解决下载失败或冲突问题)。
示例

bash 复制代码
npm cache clean --force  # 强制清除缓存

解析

  • 当依赖安装失败时,可尝试清除缓存后重试。

8. 发布包到 npm

命令npm publish
功能 :将本地包发布到 npm 公共仓库。
示例

bash 复制代码
npm publish           # 发布当前包
npm publish --tag beta # 发布带标签的版本(如 beta 测试版)

解析

  • 需先登录 npm login,且 package.json 中需有唯一 nameversion

三、版本控制相关

9. 语义化版本安装

示例

bash 复制代码
npm install lodash@^4.17.21  # 允许次版本和修订号更新(如 4.x.x)
npm install react@~18.2.0    # 仅允许修订号更新(如 18.2.x)
npm install vue@next         # 安装预发布版本(如实验性功能)

解析

  • ^:主版本号不变时允许更新(如 ^2.1.3 → 允许 2.x.x)。
  • ~:次版本号不变时允许更新(如 ~2.1.3 → 允许 2.1.x)。

10. 锁定版本

命令npm install --package-lock-only
功能 :仅生成 package-lock.json,不安装依赖。
示例

bash 复制代码
npm ci                   # 根据 package-lock.json 安装精确版本

解析

  • package-lock.json 确保团队或生产环境依赖版本一致。

四、开发与调试

11. 启动应用

命令npm start
功能 :运行 package.json 中定义的 "start" 脚本。
示例

bash 复制代码
npm start  # 默认启动生产环境(如 Express 服务)

解析

  • 需在 package.json 中定义 "start" 脚本:

    json 复制代码
    "scripts": {
      "start": "node index.js"
    }

12. 运行测试

命令npm test
功能 :执行测试脚本(如 jestmocha)。
示例

bash 复制代码
npm test  # 运行测试用例

解析

  • 需在 package.json 中配置 "test" 脚本。

五、问题解决

13. 检查过期依赖

命令npm outdated
功能 :列出项目中过时的依赖包。
示例

bash 复制代码
npm outdated  # 查看哪些包有更新版本

解析

  • 可结合 npm update 进行版本升级。

14. 修复安全漏洞

命令npm audit
功能 :检查并修复项目中的安全漏洞。
示例

bash 复制代码
npm audit fix          # 自动修复漏洞(可能更新依赖)
npm audit              # 仅显示漏洞报告

解析

  • 若自动修复失败,需手动更新依赖或调整版本范围。

六、其他实用命令

15. 查看帮助

命令npm help
功能 :查看 npm 命令的详细文档。
示例

bash 复制代码
npm help install  # 查看 npm install 的帮助文档
16. 查看包信息

命令npm view
功能 :查看 npm 仓库中包的详细信息。
示例

bash 复制代码
npm view express version  # 查看 express 的最新版本号

七、典型场景示例

场景 1:Vue 项目开发
bash 复制代码
# 初始化项目
npm init -y

# 安装 Vue 依赖
npm install vue@^3.2.0 -S
npm install vite@latest -D

# 运行开发服务器
npm run dev  # 启动 Vite 开发环境(默认端口 3000)
场景 2:Node.js 后端服务
bash 复制代码
# 安装 Express 和开发依赖
npm install express@^4.17.1 -S
npm install nodemon@latest -D

# 配置 package.json 脚本
"scripts": {
  "start": "node index.js",
  "dev": "nodemon index.js"
}

# 开发时自动重启
npm run dev

总结

  • 基础操作initinstalluninstall 是日常开发的核心命令。
  • 依赖管理 :通过 package.jsonpackage-lock.json 确保版本一致性。
  • 脚本扩展 :利用 npm run 自定义开发、构建、测试流程。
  • 版本控制 :善用 ^~ 符号避免依赖冲突,定期检查 npm outdatednpm audit
相关推荐
foxhuli2298 分钟前
禁止ifrmare标签上的文件,实现自动下载功能,并且隐藏工具栏
前端
青皮桔39 分钟前
CSS实现百分比水柱图
前端·css
影子信息1 小时前
vue 前端动态导入文件 import.meta.glob
前端·javascript·vue.js
青阳流月1 小时前
1.vue权衡的艺术
前端·vue.js·开源
RunsenLIu1 小时前
基于Vue.js + Node.js + MySQL实现的图书销售管理系统
vue.js·mysql·node.js
样子20181 小时前
Vue3 之dialog弹框简单制作
前端·javascript·vue.js·前端框架·ecmascript
kevin_水滴石穿1 小时前
Vue 中报错 TypeError: crypto$2.getRandomValues is not a function
前端·javascript·vue.js
孤水寒月2 小时前
给自己网站增加一个免费的AI助手,纯HTML
前端·人工智能·html
CoderLiu2 小时前
用这个MCP,只给大模型一个figma链接就能直接导出图片,还能自动压缩上传?
前端·llm·mcp
伍哥的传说2 小时前
鸿蒙系统(HarmonyOS)应用开发之实现电子签名效果
开发语言·前端·华为·harmonyos·鸿蒙·鸿蒙系统