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 [email protected]

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
相关推荐
布列瑟农的星空6 分钟前
从RequireJS到Webpack——前端跨越式发展的里程碑
前端
明教卢师傅37 分钟前
JS实现文件点击或者拖拽上传
前端·javascript
布列瑟农的星空39 分钟前
WeakMap+AbortController——优雅地取消请求
前端
二川bro1 小时前
Vuex Actions 多参数传递的解决方案及介绍
开发语言·前端·javascript
dmy1 小时前
后端1小时上手vue开发到上线
前端·vue.js·vite
codingandsleeping1 小时前
OSI 七层网络模型
前端·网络协议·http
codingandsleeping2 小时前
TCP 三次握手与四次挥手
前端·网络协议
GUIQU.2 小时前
【JavaScript】ES6+ 新特性
前端·javascript·es6
碣石潇湘无限路2 小时前
【技术】Ruby 生态概念速查表,通过对比nodejs生态(入门)
开发语言·经验分享·笔记·后端·node.js·ruby
小白_ysf2 小时前
《前端面试题之 CSS篇(第一集)》
前端·css·面试题