Node.js NPM
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
- ...
- +-- 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的模块
- $ 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
- request@2.34.0 node_modules\request
- +-- aws-sign2@0.5.0
- ...truncated...
- +-- json-stringify-safe@5.0.0
- +-- form-data@0.1.2 (async@0.2.10, combined-stream@0.0.4)
NPM不仅安装了request,还带来了一些其他request依赖的包。