npm 包管理器介绍
npm 介绍
npm
是 Node.js 的标准包管理器。
截至 2022 年 9 月,npm 注册表中已收录超过 210 万个包,使其成为全球最大的单一语言代码库,您可以确信(几乎)所有东西都有对应的包。
它最初是作为下载和管理 Node.js 包依赖项的一种方式,但此后也成为前端 JavaScript 中使用的工具。
TIP
Yarn
和 pnpm
是 npm cli 的替代方案。您也可以尝试使用它们。
包
安装所有依赖项
您可以通过运行以下命令安装 package.json
文件中列出的所有依赖项:
npm install
这将安装项目所需的一切,安装到 node_modules
文件夹中,如果该文件夹不存在则会创建它。
安装单个包
您可以通过运行以下命令安装单个包:
npm install <package-name>
此外,从 npm 5 版本开始,此命令会将 <package-name>
添加到 package.json
文件的依赖项中。在 5 版本之前,您需要添加 --save
标志。
您经常会看到此命令中添加了更多标志:
--save-dev
(或-D
) 将包添加到package.json
文件的devDependencies
部分。--no-save
防止将包保存到package.json
文件。--no-optional
防止安装可选依赖项。--save-optional
将包添加到package.json
文件的optionalDependencies
部分。
还可以使用标志的简写:
-S
:--save
-D
:--save-dev
-O
:--save-optional
devDependencies
和 dependencies
之间的区别在于,前者包含开发工具,例如测试库,而后者则与生产环境中的应用程序捆绑在一起。
至于 optionalDependencies
,区别在于依赖项的构建失败不会导致安装失败。但是,您的程序有责任处理依赖项的缺失。阅读更多关于可选依赖项的信息。
更新包
更新也很容易,只需运行
npm update
这将把所有依赖项更新到最新版本。
您也可以指定要更新的单个包:
npm update <package-name>
删除包
要删除包,您可以运行:
npm uninstall <package-name>
版本控制
除了简单的下载之外,npm
还管理版本控制,因此您可以指定包的任何特定版本,或者需要高于或低于所需版本的版本。
很多时候你会发现一个库只兼容另一个库的主要版本。
或者最新版本库中的一个错误,尚未修复,正在导致问题。
指定库的显式版本也有助于让每个人都使用包的完全相同的版本,以便整个团队运行相同的版本,直到package.json
文件更新。
在所有这些情况下,版本控制都非常有帮助,npm
遵循语义版本控制 (semver) 标准。
您可以通过运行以下命令安装特定版本的包:
npm install <package-name>@<version>
您还可以通过运行以下命令安装包的最新版本:
npm install <package-name>@latest
运行任务
package.json 文件支持一种格式,用于指定可以使用以下命令运行的命令行任务:
npm run <task-name>
例如,如果您有一个 package.json 文件,其内容如下:
{
"scripts": {
"start": "node index.js",
"test": "jest"
}
}
使用此功能运行 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