快速指南到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