npm 简介
npm 是 Node.js 的标准包管理器。
npm 的快速指南,强大的包管理器是 Node.js 成功的关键。2017 年 1 月,超过 350000 个软件包被报告在 npm 注册表中列出,使其成为地球上最大的单一语言代码存储库,您可以确定有一个包(几乎!)所有内容。
2022 年 9 月,npm 注册表中列出了超过 210 万个软件包,使其成为地球上最大的单一语言代码存储库。
它最初是下载和管理 Node.js 包的依赖项的一种方式,但此后它已成为前端 JavaScript 中使用的工具。
Yarn(https://yarnpkg.com/en/) 和 pnpm (https://pnpm.io/)是 npm cli 的替代品。您也可以它们官网查看它们。
npm、yarn 和 pnpm 之间命令的区别
- |
npm |
yarn |
pnpm |
install all |
npm install |
yarn |
pnpm install |
install |
npm install [package] |
yarn add [package] |
pnpm add [package] |
-D |
npm install [package] -D |
yarn add [package] -D |
pnpm add -D [package] |
-g |
npm install [package] -g |
yarn global add [paackage] |
pnpm add -g [package] |
uninstall |
npm uninstall [package] |
yarn remove [package] |
pnpm remove [package] |
update |
npm update [package] |
yarn upgrade [package] |
pnpm update [package] |
包(Packages)
npm 管理项目依赖项的下载。
1、安装所有依赖项
如果项目具有 package.json 文件,则通过运行
npm install
它将在node_modules文件夹中安装项目所需的所有内容,如果尚不存在,则创建它。
2、安装单个依赖
您还可以通过运行
npm install <package-name>
此外,从npm 5开始,此命令将<package-name>添加到package. json文件依赖项。在版本5之前,您需要添加标志--save。
您通常会看到更多标志添加到此命令中:
- --save-dev 安装包并将其添加到package. json文件devDependents中
- --no-save 安装但不将包添加到package. json文件依赖项
- --save-optional 安装包并将其添加到package. json文件optionalDependents
- --save-exact 表示安装的包的版本是精确指定的。
- --save-bundle 表示将安装的包将写入packege.json里面的bundleDependencies。
- --no-optional 可选将阻止安装可选依赖项,npm在找不到它或安装失败的情况下会继续进行
也可以使用标志的缩写:
- -S: --save
- -D: --save-dev
- -O: --save-optional
- -E: --save-exact
- -B: --save-bundle
devDependencies和dependencies之间的区别在于,前者在开发中的依赖,如测试包之类,而后者与生产中的构建的时候,会和程序打包在一起。
至于optionalDependencies,不同之处在于依赖项的构建失败不会导致安装失败。但您的程序有责任处理缺少依赖性的问题。
更新包
通过运行
npm update
npm将检查所有包中是否有满足版本控制约束的新版本。
您也可以指定要更新的单个程序包:
npm update <package-name>
版本控制
指定库的显式版本也有助于让每个人都使用相同版本的包,这样整个团队就可以运行相同的版本,直到package.json文件更新为止。
在所有这些情况下,版本控制有很大帮助,而npm遵循语义版本控制(semver)标准。
您可以通过运行
npm install <package-name>@<version>
运行任务
package.json文件支持指定命令行任务的格式,可以使用
npm run <task-name>
例如:
1. "scripts": { 2. "analyze": "source-map-explorer dist/static/js/main.*", 3. "clean": "rm -rf dist", 4. "start": "node scripts/start.js", 5. "build:js": "node scripts/babel-js.js", 6. "build": "node scripts/build.js", 7. "zip": "node scripts/zip.js", 8. "lint:fix": "eslint --fix --ext .js src", 9. "precommit": "lint-staged", 10. "test": "node scripts/test.js", 11. "coverage": "npm run test --coverage" 12. },
所以,你可以运行对应的命令,执行对应的任务。
1. npm run start 2. npm run clean 3. npm run build 4. ......