npm 包管理器介绍
npm 简介
npm
是 Node.js 的标准包管理器。
在 2022 年 9 月,据报告 npm 注册表中列出了超过 210 万个包,使其成为地球上最大的单一语言代码存储库,您可以肯定的是,对于(几乎!)所有内容都有一个包。
它最初是作为下载和管理 Node.js 包的依赖项的一种方式,但此后已成为前端 JavaScript 中也使用的工具。
包
npm
安装、更新和管理项目依赖项的下载。 依赖项是预先构建的代码片段,例如您的 Node.js 应用程序需要工作的库和包。
安装所有依赖项
如果一个项目有一个 package.json
文件,通过运行
npm install
它将在 node_modules
文件夹中安装项目所需的一切,如果该文件夹尚不存在,则创建它。
安装单个包
您还可以通过运行以下命令安装特定的包
npm install <package-name>
此外,自从 npm 5 以来,此命令将 <package-name>
添加到 package.json
文件dependencies中。在版本 5 之前,您需要添加标志 --save
。
通常你会看到更多标志添加到此命令中
--save-dev
安装并将条目添加到package.json
文件 devDependencies--no-save
安装但不将条目添加到package.json
文件 dependencies--save-optional
安装并将条目添加到package.json
文件 optionalDependencies--no-optional
将阻止安装可选依赖项
也可以使用标志的简写
- -S:
--save
- -D:
--save-dev
- -O:
--save-optional
devDependencies 和 dependencies 之间的区别在于,前者包含开发工具(如测试库),而后者与生产中的应用程序捆绑在一起。
至于 optionalDependencies,区别在于依赖项的构建失败不会导致安装失败。 但是,您的程序有责任处理缺少依赖项的情况。 阅读有关 可选依赖项的更多信息。
更新包
通过运行以下命令,更新也很容易
npm update
npm
将检查所有包是否有满足您的版本控制约束的较新版本。
您还可以指定单个包进行更新
npm update <package-name>
版本控制
除了简单的下载之外,npm
还管理版本控制,因此您可以指定包的任何特定版本,或者要求高于或低于您需要的版本。
很多时候您会发现一个库只与另一个库的主要版本兼容。
或者 lib 的最新版本中的错误,仍然未修复,导致出现问题。
指定库的显式版本还有助于使每个人都保持在包的完全相同的版本上,以便整个团队运行相同的版本,直到更新 package.json
文件。
在所有这些情况下,版本控制都大有帮助,并且 npm
遵循语义版本控制 (semver) 标准。
您可以通过运行以下命令来安装包的特定版本
npm install <package-name>@<version>
运行任务
package.json 文件支持一种格式,用于指定可以使用以下命令运行的命令行任务
npm run <task-name>
例如
{
"scripts": {
"start-dev": "node lib/server-development",
"start": "node lib/server-production"
}
}
使用此功能运行 Webpack 非常常见
{
"scripts": {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
}
}
因此,您可以运行以下命令,而不是键入那些容易忘记或键入错误的冗长命令
$ npm run watch
$ npm run dev
$ npm run prod