NPM(Node Package Manger)是一种与社区共享node_modules的方法。
package.json
NPM使用一个名为package.json的简单JSON文件来共享模块信息。
要在当前文件夹中创建一个package.json文件,只需运行以下代码。
$npm init
运行后将问你几个问题,如模块的名称和版本。只需按Enter键直到结束。
这将在当前文件夹中创建一个package.json,其名称设置为当前文件夹,版本设置为0.0.0,以及一些其他合理的默认值。
{ "name": "myData", "version": "0.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
安装NPM包
让我们安装一个模块,例如,underscore(www.npmjs.org/package/underscore)到一个文件夹。
下载最新版本的underscore,你只需运行以下命令。
$ npm install underscore
上面的代码生成以下结果。
这将从npmjs.org下载最新版本的underscore
,并将其放入当前文件夹中的node_modules / underscore。
要加载这个模块,现在你所需要做的是进行require('underscore')
调用。
以下代码加载underscore库,并将数组的最小元素输出到控制台。
var _ = require("underscore"); console.log(_.min([3, 1, 2])); // 1
上面的代码生成以下结果。
保存依赖关系
每当你运行npm install,你有一个可选的命令行标志可用:--save
告诉NPM写关于你安装到package.json中的信息。
执行npm init创建一个包文件。
$ npm init
发出以下命令将信息保存到package.json。
$ npm install underscore --save
上面的代码生成以下结果。
如果使用 ?-save 运行安装,不仅会将underscore下载到node_modules,还将更新package.json中的dependencies以指向underscore的已安装版本。
"dependencies": { "underscore": "^1.6.0" }
通过跟踪dependencies,我们知道我们正在使用的特定库的哪个发布版本。
刷新node_modules文件夹
要package.json中刷新node_modules文件夹,我们可以运行以下命令:
$ npm install
这只是查看你的package.json文件,并下载package.json中指定dependencies的一个新副本。
列出所有dependencies
要查看已安装的包,请运行 npm ls
命令。
$ npm ls ... +-- [email protected]
删除依赖关系
要删除包,请使用 npm uninstall
或 npm rm
命令,并指定一个或多个包的名称。
npm rm underscore --save
在本地从node_modules中删除underscore文件夹,并修改package.json的dependencies部分。你可以通过添加-g
选项来删除全局包。
以下代码显示如何使用 npm rm
删除命令模块。
npm rm commander
package.json在线依赖关系跟踪
以下代码显示了安装具有大量dependencies的模块
$ npm install request npm http GET https://registry.npmjs.org/request npm http GET https://registry.npmjs.org/tunnel-agent npm http GET https://registry.npmjs.org/json-stringify-safe ...truncated... npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5 [email protected] node_modules\request +-- [email protected] ...truncated... +-- [email protected] +-- [email protected] ([email protected], [email protected])
NPM不仅安装了request,还带来了一些其他request依赖的包。