
npm(Node Package Manager)是 Node.js 的默认包管理工具,也是世界上最大的软件注册表。本教程从零开始,涵盖 npm 的基础使用、脚本管理、依赖控制、发布包、安全审计等进阶内容,适合前端和 Node.js 开发者系统学习。
npm 随 Node.js 一起安装。检查版本:
node -v
npm -vnpm init #会引导你创建 package.json 文件,包含项目名称、版本、描述、入口文件等信息。
npm init -y # 快速初始化(使用默认值)安装生产依赖 安装到 node_modules 并在 package.json 的 dependencies 中记录
npm install lodash
# 或简写
npm i lodash安装开发依赖 开发依赖仅用于开发环境(如打包工具、测试框架),不会随项目发布。
npm install webpack --save-dev
# 或
npm i webpack -D卸载生产依赖
npm uninstall lodash
# 或
npm rm lodash卸载开发依赖
npm uninstall webpack -D用于安装 CLI 工具:
npm install -g typescript
npm install -g create-react-app⚠️ 注意:全局包不在项目 node_modules 中,不被 package.json 管理。
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"
}
}格式:主版本.次版本.修订号(如 1.2.3)
npm 允许在 package.json 中定义可执行脚本。
{
"scripts": {
"start": "node server.js",
"build": "webpack --mode production",
"dev": "webpack serve --mode development",
"test": "jest",
"lint": "eslint src/",
"clean": "rimraf dist node_modules"
}
}npm run dev
npm run build
npm test # 可省略 runnpm 会自动执行特定前缀的脚本:
示例:
"scripts": {
"prebuild": "rimraf dist",
"build": "webpack --mode production",
"postbuild": "echo ' Build completed!'"
}运行 npm run build 时,三个脚本会依次执行。
命令 | 场景 |
|---|---|
npm install | 开发环境安装依赖 |
npm ci | CI/CD 或生产环境,更快、更可靠,必须有 package-lock.json |
推荐在 CI 中使用 npm ci。
npm list # 查看本地依赖树
npm list -g # 查看全局包
npm list --depth=1 # 限制层级
npm outdated # 查看可更新的包npm loginmkdir my-awesome-lib
cd my-awesome-lib
npm init -y编写代码,例如 index.js:
module.exports = () => {
console.log('Hello from my lib!');
};私有包需使用作用域(如 @yourname/pkg):
npm init -y --scope=yournamenpm publish
# 发布私有包
npm publish --access restricted遵循语义化版本:
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。
查看项目依赖中的安全漏洞。
npm audit自动修复:
npm audit fix
npm audit fix --force # 强制修复(可能破坏兼容性)npm outdated手动更新:
npm update lodash
# 或更新到最新版
npm install lodash@latest项目级配置(.npmrc):
# 使用淘宝镜像加速
registry=https://registry.npmmirror.com
# 自动保存为 devDependencies
save-dev=true
# 设置代理
proxy=http://proxy.company.com:8080
https-proxy=http://proxy.company.com:8080npm config list # 查看配置
npm config get registry
npm config set registry https://registry.npmmirror.comnpm cache verify # 验证缓存
npm cache clean --force
npm install --prefer-offline # 优先使用缓存npm explain lodash
# 输出:为什么 lodash 被安装?被哪些包依赖?在库项目中:
npm link在使用该项目的应用中:
npm link my-awesome-lib可实现实时调试本地库。
工具 | 特点 |
|---|---|
Yarn | 速度快,支持 Workspaces,确定性安装 |
pnpm | 磁盘节省(硬链接),依赖隔离严格 |
bun | 极速(Rust 编写),内置 bundler/test runner |
虽然有替代品,但 npm 仍是生态最广、兼容性最好的选择。
必须做:
避免:
命令 说明