目录
npm 简介
包(Packages)
更新包
版本控制
运行任务
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>
例如:
"scripts": {
"analyze": "source-map-explorer dist/static/js/main.*",
"clean": "rm -rf dist",
"start": "node scripts/start.js",
"build:js": "node scripts/babel-js.js",
"build": "node scripts/build.js",
"zip": "node scripts/zip.js",
"lint:fix": "eslint --fix --ext .js src",
"precommit": "lint-staged",
"test": "node scripts/test.js",
"coverage": "npm run test --coverage"
},
所以,你可以运行对应的命令,执行对应的任务。
npm run start
npm run clean
npm run build
......