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 ci | CI/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 临时运行命令