快速指南到npm,这是Node.js成功的重要组成部分。截至2017年1月,npm注册表中已有超过35万个软件包,使它成为地球上最大的单一语言代码仓库,你可以确信几乎任何东西都可以找到一个软件包。
介绍npm
npm是Node.js的标准包管理器。
截至2017年1月,npm注册表中已有超过35万个软件包,使它成为地球上最大的单一语言代码仓库,你可以确信几乎任何东西都可以找到一个软件包。
它最初是用于下载和管理Node.js软件包的依赖项,但现在也被用于前端JavaScript。
npm有许多功能。
Yarn是npm的一个替代方案,请确保也了解一下它。
安装
安装Node.js时也会安装npm。请前往https://nodejs.org安装Node,如果你还没有在系统上安装过它。
如何使用npm
npm管理项目的所有依赖项的下载。
安装所有依赖项
如果项目有一个packages.json
文件,在命令行中运行以下命令即可安装项目所需的所有依赖项:
npm install
它将在node_modules
文件夹中安装所有依赖项,并在需要时创建该文件夹。
安装单个软件包
你也可以通过以下命令安装一个特定的软件包:
npm install <package-name>
通常会在此命令中添加更多标志:
--save
将软件包安装并添加到package.json
文件的dependencies中(从 npm 5 开始,此为默认行为)。--save-dev
将软件包安装并添加到package.json
文件的devDependencies中。
两者的区别主要在于,devDependencies通常用于开发工具,比如测试库,而dependencies会在生产环境中与应用程序一起打包。
更新软件包
更新软件包也很容易,只需运行以下命令:
npm update
npm会检查所有软件包,找到满足版本控制条件的较新版本。
你也可以指定更新某个特定软件包:
npm update <package-name>
版本控制
除了下载功能,npm还可以管理版本控制,你可以指定软件包的任何特定版本,或要求高于或低于所需版本。
许多时候,你会发现某个库只与另一个库的主要版本兼容。
或者,最新版本中的一个未修复的错误导致了问题。
指定库的显式版本还有助于使每个人都使用完全相同的软件包版本,直到更新package.json
文件为止。
在所有这些情况下,版本控制都很有帮助,npm遵循语义版本控制(semver)标准。
运行任务
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