Npm 最全面、最深入的高阶命令详解

npm 基础与进阶教程

  • 一、npm 基础入门
    • 1. 安装与检查
    • 2. 初始化项目
    • 3. 安装
    • 4. 卸载
    • 5. 全局安装
  • 二、package.json 详解
    • 1. 核心字段
    • 2.版本号语义(SemVer)
  • 三、运行脚本(npm scripts)
    • 1.常用脚本示例
    • 2.运行脚本:
    • 3.脚本钩子(Hook Scripts)
  • 四、依赖管理进阶
    • 1. 锁定依赖:package-lock.json
    • 2.安装策略
    • 3. 查看依赖
  • 五、发布自己的 npm 包
    • 1. 准备工作
    • 2. 创建包
    • 3. 设置作用域(可选)
    • 4. 发布
    • 5. 更新版本
  • 六、安全与维护
    • 1. 安全审计
    • 2. 检查过期依赖
  • 七、高级技巧
    • 1. 使用 .npmrc 配置文件
    • 2. 全局配置管理
    • 3. 离线模式与缓存
    • 4. 调试依赖
    • 5. 本地包调试(npm link)
  • 八、替代工具简介
  • 九、最佳实践总结
  • 十、实用命令速查表

npm(Node Package Manager)是 Node.js 的默认包管理工具,也是世界上最大的软件注册表。本教程从零开始,涵盖 npm 的基础使用、脚本管理、依赖控制、发布包、安全审计等进阶内容,适合前端和 Node.js 开发者系统学习。


一、npm 基础入门

1. 安装与检查

npm 随 Node.js 一起安装。检查版本:

node -v
npm -v

2. 初始化项目


npm init   #会引导你创建 package.json 文件,包含项目名称、版本、描述、入口文件等信息。
npm init -y  # 快速初始化(使用默认值)

3. 安装

安装生产依赖
安装到 node_modules 并在 package.json 的 dependencies 中记录


npm install lodash
# 或简写
npm i lodash

安装开发依赖
开发依赖仅用于开发环境(如打包工具、测试框架),不会随项目发布。


npm install webpack --save-dev
# 或
npm i webpack -D

4. 卸载

卸载生产依赖

npm uninstall lodash
# 或
npm rm lodash

卸载开发依赖


npm uninstall webpack -D

5. 全局安装

用于安装 CLI 工具:


npm install -g typescript
npm install -g create-react-app

⚠️ 注意:全局包不在项目 node_modules 中,不被 package.json 管理。

二、package.json 详解

1. 核心字段

package.json 是项目的配置中心,核心字段包括:


{
  "name": "my-app",
  "version": "1.0.0",
  "description": "A simple app",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "keywords": ["app", "demo"],
  "author": "Your Name",
  "license": "MIT",
  "dependencies": {
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "webpack": "^5.0.0"
  }
}

2.版本号语义(SemVer)

格式:主版本.次版本.修订号(如 1.2.3)

  • ^1.2.3:允许更新到 1.x.x 的最新版(不改变主版本)
  • ~1.2.3:允许更新到 1.2.x 的最新版(不改变主次版本)
  • 1.2.3:锁定精确版本

三、运行脚本(npm scripts)

npm 允许在 package.json 中定义可执行脚本。

1.常用脚本示例


{
  "scripts": {
    "start": "node server.js",
    "build": "webpack --mode production",
    "dev": "webpack serve --mode development",
    "test": "jest",
    "lint": "eslint src/",
    "clean": "rimraf dist node_modules"
  }
}

2.运行脚本:


npm run dev
npm run build
npm test  # 可省略 run

3.脚本钩子(Hook Scripts)

npm 会自动执行特定前缀的脚本:

  • prestart → start → poststart
  • prebuild → build → postbuild

示例:


"scripts": {
  "prebuild": "rimraf dist",
  "build": "webpack --mode production",
  "postbuild": "echo ' Build completed!'"
}

运行 npm run build 时,三个脚本会依次执行。

四、依赖管理进阶

1. 锁定依赖:package-lock.json

  • package-lock.json 记录了每个包的精确版本和依赖树结构。
  • 确保团队成员安装的依赖完全一致。
  • 务必提交到 Git。

2.安装策略

命令场景
npm install开发环境安装依赖
npm ciCI/CD 或生产环境,更快、更可靠,必须有 package-lock.json

推荐在 CI 中使用 npm ci。

3. 查看依赖


npm list                    # 查看本地依赖树
npm list -g                 # 查看全局包
npm list --depth=1          # 限制层级
npm outdated                # 查看可更新的包

五、发布自己的 npm 包

1. 准备工作

  • 注册 npm 账号:https://www.npmjs.com/
  • 登录:

npm login

2. 创建包


mkdir my-awesome-lib
cd my-awesome-lib
npm init -y

编写代码,例如 index.js:


module.exports = () => {
  console.log('Hello from my lib!');
};

3. 设置作用域(可选)

私有包需使用作用域(如 @yourname/pkg):


npm init -y --scope=yourname

4. 发布


npm publish
# 发布私有包
npm publish --access restricted

5. 更新版本

遵循语义化版本:


npm version patch     # 1.0.0 → 1.0.1
npm version minor     # 1.0.0 → 1.1.0
npm version major     # 1.0.0 → 2.0.0
npm publish

每次 npm version 会自动提交 Git 并打 tag。

六、安全与维护

1. 安全审计

查看项目依赖中的安全漏洞。


npm audit

自动修复:


npm audit fix
npm audit fix --force  # 强制修复(可能破坏兼容性)

2. 检查过期依赖


npm outdated

手动更新:


npm update lodash

# 或更新到最新版
npm install lodash@latest

七、高级技巧

1. 使用 .npmrc 配置文件

项目级配置(.npmrc):


# 使用淘宝镜像加速
registry=https://registry.npmmirror.com

# 自动保存为 devDependencies
save-dev=true

# 设置代理
proxy=http://proxy.company.com:8080
https-proxy=http://proxy.company.com:8080

2. 全局配置管理


npm config list     # 查看配置
npm config get registry
npm config set registry https://registry.npmmirror.com

3. 离线模式与缓存


npm cache verify    # 验证缓存
npm cache clean --force
npm install --prefer-offline  # 优先使用缓存

4. 调试依赖


npm explain lodash
# 输出:为什么 lodash 被安装?被哪些包依赖?

5. 本地包调试(npm link)

在库项目中:

npm link

在使用该项目的应用中:

npm link my-awesome-lib

可实现实时调试本地库。

八、替代工具简介

工具特点
Yarn速度快,支持 Workspaces,确定性安装
pnpm磁盘节省(硬链接),依赖隔离严格
bun极速(Rust 编写),内置 bundler/test runner

虽然有替代品,但 npm 仍是生态最广、兼容性最好的选择。

九、最佳实践总结

必须做:

  • 提交 package-lock.json
  • 使用 npm ci 在 CI/CD 中安装
  • 定期运行 npm audit 和 npm outdated
  • 使用 npm version 管理版本
  • 敏感信息用环境变量,不用写在脚本中

避免:

  • 直接修改 node_modules
  • 全局安装过多包
  • 忽略安全警告

十、实用命令速查表

命令 说明

  • npm init -y 快速初始化项目
  • npm i pkg -D 安装开发依赖
  • npm ci CI 环境安装
  • npm run <_script> 运行脚本
  • npm audit 安全检查
  • npm publish 发布包
  • npm version patch 小版本更新
  • npm explain pkg 查看依赖原因
  • npx create-react-app app 临时运行命令
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木易 士心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值