NPM(NodePackage Manager ,Node包管理器)是Node.js的包管理器,它允许开发人员在Node.js中创建,共享并重用模块。它也可以用于共享完整的Node.js应用程序,
模块就是可以在不同项目中可以重用的代码库。NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
典型的模块示例包括:
1、用于数据库交互的库
2、验证数据输入的库
3、分析yaml文件的库
1、NPM包的安装
如果根据上一节的内容,是在http://nodejs.cn/下载地址安装的,系统已经默认安装好了,因为它目前已经集成在Node的安装包中,如果有没有安装好的用户,
可以直接去官方网站下载安装,这里就不在介绍。如下截图是安装好了Node以后,系统提示你已经安装了NPM包。
另外我们可以输入npm -v 来查看nmp包管理器的版本
2、使用NPM管理器安装模块
如果我们的代码中有调用一些外部模块,此时我们就需要安装模块,当然安装这些模块最好的方式就是用NPM包管理器来安装,这里要注意这个是联网安装,
所以一定要在有网络的环境下进行。安装的方式是在终端中输入如下命令:
npminstall <Module Name>
<span style="color:#333333;">npm install <Module Name></span>
<ModuleName>代表的模块名字。比如你需要安装express模块,就可以输入
npminstall express
<span style="color:#333333;">npm install express</span>
安装完成接入如下:
安装好之后,express 包就放在了工程目录下的node_modules目录中,这里指同一个目录,因此在代码中只需要通过require('express') 的方式就好,无需指定第三方包路径。调用方式如下:
var express = require('express');
<span style="color:#333333;">var express = require('express');</span>
这里的路径要特别注意,按照刚才的安装路径,系统会在C:\Users\A1040687生成一个node_modules文件夹,里面就是我们安装的模块。
如果我将当前路径切换到D盘,那么模块会安装到D盘下,并且产生一个node_modules目录,里面存放我们安装的模块名字。
切换到D盘,并且安装express模块,此时会模块会安装到D盘下,如截图所示。
根据上面的截图,我们可以看出模块的版本,模块的名称,以及下载的位置。
全局安装与本地安装
上面的安装,我们就是采用的本地安装,npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如:
npminstall express #本地安装
npminstall express -g #全局安装
<span style="color:#333333;">npm install express # </span><span style="color:#333333;">本地安装</span>
npm install express -g # 全局安装
如果出现以下错误:
npm err!Error: connect ECONNREFUSED 127.0.0.1:8087
<span style="color:#333333;">npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 </span>
解决办法为:
npmconfig set proxy null
<span style="color:#333333;"> npm config set proxy null</span>
这个地方很多人会因为代理上网的方式无法安装,所以建议采用直通的方式安装模块。
本地安装
- 1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
- 2. 可以通过 require() 来引入本地安装的包。
全局安装
- 1. 将安装包放在 /usr/local 下。
- 2. 可以直接在命令行里使用。
- 3. 不能通过 require() 来引入本地安装的包。
全局安装express 模块,此时安装在了C:\Users\A1040687\AppData\Roaming\npm\node_modules路径下,并不会安装在D盘下。
另外我们可以通过如下命令,查看全局安装的模块:
npm ls -g
<span style="color:#333333;">npm ls -g</span>
模块的卸载,我们可以通过如下命令进行卸载:
npmuninstall express -g #卸载全局模块
npmuninstall express #卸载本地模块
<span style="color:#333333;">npm uninstall express -g #</span><span style="color:#333333;">卸载全局模块</span>
npm uninstall express #卸载本地模块
如下截图:
卸载后,我们可以到 /node_modules/目录下查看包是否还存在,或者使用以下命令查看
npm ls
<span style="color:#333333;">npm ls</span>
模块的更新:
npmupdate express
<span style="color:#333333;">npm update express</span>
模块的搜索,
npmsearch express
<span style="color:#333333;">npm search express</span>
注意在第一次搜索的时候可能会花费较长的时间来创建索引。这样搜索的不仅仅是模块名,还有模块的描述,另外还可以使用空格隔开关键字的方法跨关键字搜索,比如:
npmsearch express accepts
<span style="color:#333333;">npm search express accepts</span>
NPM 常用命令
除了可以在npmjs.org/doc/查看官方文档外,这里再介绍一些NPM常用命令。
NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。
· NPM提供了很多命令,例如install
和publish
,使用npm help
可查看所有命令。
· 使用npm help <command>
可查看某条命令的详细帮助,例如npm help install
。
· 在package.json
所在目录下使用npm install . -g
可先在本地安装当前命令行程序,可用于发布前的本地测试。
· 使用npm update <package>
可以把当前目录下node_modules
子目录里边的对应模块更新至最新版本。
· 使用npm update <package> -g
可以把全局安装的对应命令行程序更新至最新版。
· 使用npm cache clear
可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
· 使用npm unpublish <package>@<version>
可以撤销发布自己发布过的某个版本代码。
- 使用npm docs <module_name> 查看模块文档。
- 使用npm bugs <module_name>查看项目Bugs。
使用模块小试牛刀:
要在Node.js应用中使用模块,在下载它们之后必须请求(require)它们,在应用程序中请求一个模块的方法如下:
var _=require('module_name');
<span style="color:#333333;">var _=require('module_name');</span>
现在,当运行应用程序的时候,它将在原文件中找到库并将其包含在应用程序中,通常要我们使用这个模块,所以我们将其赋予一个变量。
1、使用文本编辑器,在里面输入:
var _=require('underscore');
_.each([1,2,3],function(num){
console.log("underscore.js says"+num);
});
<span style="color:#333333;">var _=require('underscore');</span>
_.each([1,2,3],function(num){
console.log("underscore.js says"+num);
});
然后将文本保存为foo.js。
2、使用终端安装underscore模块:
npminstall underscore
<span style="color:#333333;">npm install underscore</span><span style="color:#333333;"> 3</span><span style="color:#333333;">、从终端运行程序:</span>
nodefoo.js
<span style="color:#333333;">node foo.js</span>
输出截图的信息,该程序underscore模块数到3,代表运行成功,在运行的时候,一定要注意路径,node_modules与foo.js一定要在同一个目录下,不然会运行失败。
我的路径:
最后,在开发Node.js应用程序的时候,毫无疑问要使用模块,一个一个安装模块会是个耗时的工作,而且容易出错,比如要是忘记安装某个模块该怎么办呢?不用担心,npm允许开发人员使用package.json文件来指定应用程序中要使用的模块,使用它有如下好处:
1、无需一个一个安装模块
2、其他人员可以很容易的安装你应用程序的模块
3、应用程序的依赖关系存储在一个地方
关于这个的具体用法,我会在后面的文章中进一步介绍。