Node.js NPM

NPM(Node Package Manger)是一种与社区共享node_modules的方法。

package.json

NPM使用一个名为package.json的简单JSON文件来共享模块信息。

要在当前文件夹中创建一个package.json文件,只需运行以下代码。

  1. $npm init

运行后将问你几个问题,如模块的名称和版本。只需按Enter键直到结束。

这将在当前文件夹中创建一个package.json,其名称设置为当前文件夹,版本设置为0.0.0,以及一些其他合理的默认值。

  1. {
  2. "name": "myData",
  3. "version": "0.0.0",
  4. "description": "",
  5. "main": "index.js",
  6. "scripts": {
  7. "test": "echo \"Error: no test specified\" && exit 1"
  8. },
  9. "author": "",
  10. "license": "ISC"
  11. }

安装NPM包

让我们安装一个模块,例如,underscore(www.npmjs.org/package/underscore)到一个文件夹。

下载最新版本的underscore,你只需运行以下命令。

  1. $ npm install underscore

上面的代码生成以下结果。

下载underscore

这将从npmjs.org下载最新版本的underscore,并将其放入当前文件夹中的node_modules / underscore。

要加载这个模块,现在你所需要做的是进行require('underscore')调用。

以下代码加载underscore库,并将数组的最小元素输出到控制台。

  1. var _ = require("underscore");
  2. console.log(_.min([3, 1, 2])); // 1

上面的代码生成以下结果。

加载underscore

保存依赖关系

每当你运行npm install,你有一个可选的命令行标志可用:--save 告诉NPM写关于你安装到package.json中的信息。

执行npm init创建一个包文件。

  1. $ npm init

发出以下命令将信息保存到package.json。

  1. $ npm install underscore --save

上面的代码生成以下结果。

保存信息到package.json

如果使用 ?-save 运行安装,不仅会将underscore下载到node_modules,还将更新package.json中的dependencies以指向underscore的已安装版本。

  1. "dependencies": {
  2. "underscore": "^1.6.0"
  3. }

通过跟踪dependencies,我们知道我们正在使用的特定库的哪个发布版本。

刷新node_modules文件夹

要package.json中刷新node_modules文件夹,我们可以运行以下命令:

  1. $ npm install

这只是查看你的package.json文件,并下载package.json中指定dependencies的一个新副本。

列出所有dependencies

要查看已安装的包,请运行 npm ls 命令。

  1. $ npm ls
  2. ...
  3. +-- underscore@1.6.0

删除依赖关系

要删除包,请使用 npm uninstall npm rm 命令,并指定一个或多个包的名称。

npm rm underscore --save 在本地从node_modules中删除underscore文件夹,并修改package.json的dependencies部分。你可以通过添加-g 选项来删除全局包。

以下代码显示如何使用 npm rm 删除命令模块。 npm rm commander

package.json在线依赖关系跟踪

以下代码显示了安装具有大量dependencies的模块

  1. $ npm install request
  2. npm http GET https://registry.npmjs.org/request
  3. npm http GET https://registry.npmjs.org/tunnel-agent
  4. npm http GET https://registry.npmjs.org/json-stringify-safe
  5. ...truncated...
  6. npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
  7. request@2.34.0 node_modules\request
  8. +-- aws-sign2@0.5.0
  9. ...truncated...
  10. +-- json-stringify-safe@5.0.0
  11. +-- form-data@0.1.2 (async@0.2.10, combined-stream@0.0.4)

NPM不仅安装了request,还带来了一些其他request依赖的包。