npm (Node Package Manager) 是JavaScript运行时环境Node.js的默认包管理工具,为开发者提供了一种高效管理项目依赖的方式。作为世界上最大的软件注册表,npm包含了超过100万个开源包,极大地促进了JavaScript生态系统的繁荣发展。
npm随Node.js一起安装,可通过以下命令检查版本:
npm -v
创建新项目时,首先需要初始化package.json文件:
npm init
# 或使用默认值快速创建
npm init -y
# 安装包并保存到dependencies
npm install lodash
# 简写形式
npm i lodash
# 安装指定版本
npm install [email protected]
# 安装开发依赖
npm install webpack --save-dev
# 或简写
npm i webpack -D
关于开发依赖,参考文章:npm开发依赖(仅在开发阶段需要,生产环境不需要的包)(npm install xxx --save-dev、npm i xxx -D、npm install --production)
# 卸载包并从dependencies中移除
npm uninstall lodash
# 简写形式
npm rm lodash
# 或
npm remove lodash
# 卸载开发依赖
npm uninstall webpack --save-dev
# 或简写
npm rm webpack -D
# 列出所有已安装的包
npm list
# 只显示顶层依赖
npm list --depth=0
# 查看特定包
npm list lodash
{
"dependencies": {
"react": "^17.0.2" // 生产环境依赖
},
"devDependencies": {
"webpack": "^5.52.0" // 开发环境依赖
},
"peerDependencies": {
"react": ">=16.8.0" // 宿主环境依赖
},
"optionalDependencies": {
"fsevents": "^2.3.2" // 可选依赖,安装失败不会导致npm install失败
}
}
"lodash": "^4.17.21" // ^表示兼容补丁和小版本更新
"express": "~4.17.1" // ~表示兼容补丁版本更新
"moment": "4.17.1" // 精确版本
"webpack": ">=5.0.0" // 大于等于指定版本
npm outdated
npm update lodash
npm update
package.json中定义常用操作:
{
"scripts": {
"start": "node server.js", // 启动应用
"dev": "nodemon server.js", // 开发模式
"build": "webpack --mode production", // 构建生产版本
"test": "jest", // 运行测试
"lint": "eslint ." // 代码检查
}
}
运行脚本:
npm run dev
# start、test、stop、restart可以省略run
npm test
{
"scripts": {
"prebuild": "echo '构建前执行'", // build前自动执行
"build": "webpack",
"postbuild": "echo '构建后执行'" // build后自动执行
}
}
npm publish --tag beta
)npm cache clean --force
)npm info lodash
# 查看特定版本信息
npm info lodash versions
npm search react-component
npm audit fix --only=dev
)# 全局安装包
npm install -g typescript
# 或简写
npm i -g typescript
npm uninstall -g typescript
npm root -g
npx npm-check -u
)使用npm-run-all包简化多脚本运行:
{
"scripts": {
"lint:js": "eslint .", // JS代码检查
"lint:css": "stylelint '**/*.css'", // CSS代码检查
"lint": "npm-run-all --parallel lint:*", // 并行运行所有lint脚本
"dev:server": "nodemon server.js", // 后端开发服务
"dev:client": "webpack serve", // 前端开发服务
"dev": "npm-run-all --parallel dev:*" // 并行运行所有dev脚本
}
}
npm install -g npmgraph
)npmgraph
)npm link 是用于本地包开发和测试的强大工具,主要解决以下问题:
开发阶段测试:当你开发自己的 npm 包时,可以通过 npm link 在不发布到 npm 仓库的情况下,在其他项目中测试这个包
工作原理:
npm link
会在全局 node_modules 创建一个符号链接npm link package-name
创建指向全局链接的本地链接实际使用场景:
优势:对本地包的任何修改都会立即反映在使用它的项目中,无需重新安装,大大提高了开发效率
解除链接可以使用 npm unlink package-name
或 npm uninstall package-name
命令。
# 在本地包目录中执行,创建全局链接
npm link
# 在需要使用本地包的项目中执行
npm link package-name
{
"name": "project-name",
"lockfileVersion": 2,
"requires": true,
"packages": {
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}
}
}
npm install --production
)npm doctor
通过本文全面掌握npm命令,能够显著提升JavaScript项目开发效率和质量。从基础命令到高级技巧,npm为现代JavaScript开发提供了强大而灵活的工具链支持。