n=NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。有了NPM,能够很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。npms安装:html
下载npm源代码:
https://github.com/isaacs/npm/tagsnode
将npm源代码解压到D:\npmjs目录中。
在命令提示符窗口中执行下面的操做,完成npm的安装:linux
D:\>cd npmjs
D:\npmjs>node cli.js install -gf
另外:nginx
node cli.js install npm -gf //能够安装最新版的NPM
node cli.js install npm@1.0.105 -gf //能够安装指定版本的NPM
上面两种方法都是经过网络从代码库中下载并安装,可是代码库通常只保留最近的两个版本。git
NPM安装完成后,将"D:\nodejs\node_modules"加入系统环境变量NODE_PATH中。github
D:\develop\nodejs\hello>npm install -d
npm info it worked if it ends with ok
npm info using npm@1.0.103
npm info using node@v0.5.10
npm info preinstall application-name@0.0.1
npm info addNamed [ 'jade', '>= 0.0.1' ]
npm info addNamed [ 'express', '2.5.0' ]web
最好设置下国内镜像要否则下载会很慢。淘宝有个npm镜像。chrome
NPM经常使用的命令有:express
(1)$ npm install moduleNames
安装Node模块
注意事项:若是在使用模块的时候不知道其名字,能够经过http://search.npmjs.org网站按照
索引值找到想要的模块。npm也提供了查询的功能 $ npm search indexName
安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。
node的安装分为全局模式和本地模式。通常状况下会以本地模式运行,包会被安装
到和你的应用代码统计的本地node_modules目录下。在全局模式下,Node包会被
安装到Node的安装目录下的node_modules下。全局安装命令为
$ npm install -g moduleName。获知使用$npm set global=true来设定安装模式
,$npm get global能够查看当前使用的安装模式。
我最开始已经用这个安装formidable:
C:\Users\Administrator
>nmp install formidable
个人代码放在H盘:
var formidable = require('formidable'),
运行老是报错:
缘由是什么呢?原来node.js 模块安装有两种方式,一种是local安装,一种是全局安装。
nmp install xxx 普通安装
npm install xxx -g 将会被安装到【全局目录】里,个人是安装在:
C:\Users\Administrator\AppData\Roaming\npm\node_modules 目录。
能够经过 npm config set prefix "目录路径" 来设置。
普通的npm会安装到当前目录,加上—global参数(简写为-g)就会安装到默认的全局目录,至于Node和npm的默认目录是哪些,建议阅读这篇文章,对于win7,8用户言,如今是默认装到Program Files\nodejs下, npm 的 repo在 %USERPROFILE%\AppData\Roaming\npm 且会自动加到系统PATH下。
1. npm install xxx -g 时, 模块将被下载安装到【全局目录】中。
【全局目录】经过 npm config set prefix "目录路径" 来设置。
2. npm install xxx ,则是将模块下载到当前命令行所在目录。
例如:
c:\123>npm install xxx
将会安装到
c:\123\node_modules\xxx
若是是全局安装,还要设置一个环境变量,
NODE_PATH =C:\Users\Administrator\AppData\Roaming\npm\node_modules
就能够了。
(2)$ npm view moduleNames
查看node模块的package.json文件夹
注意事项:若是想要查看package.json文件夹下某个标签的内容,可使用
$ npm view moduleName labelName
(3)$ npm list
查看当前目录下已安装的node包
注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中
的node_modules下的内容。$ npm list parseable=true能够目录的形式来展示当
前安装的全部node包
(4)$ npm help
查看帮助命令
(5)$ npm view moudleName dependencies
查看包的依赖关系
(6)$ npm view moduleName repository.url
查看包的源文件地址
(7)$ npm view moduleName engines
查看包所依赖的Node的版本
(8)$npm help folders
查看npm使用的全部文件夹
(9)$ npm rebuild moduleName
用于更改包内容后进行重建
(10)$ npm outdated
检查包是否已通过时,此命令会列出全部已通过时的包,能够及时进行包的更新
(11)$ npm update moduleName
更新node模块
(12)$ npm uninstall moudleName
卸载node模块
(13)一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访
问npm的json文件夹的方法以下:
$ npm help json
此命令会以默认的方式打开一个网页,若是更改了默认打开程序则可能不会以网页的形式打
开。
(14)发布一个npm包的时候,须要检验某个包名是否已存在
$ npm search packageName
(15)不少时候咱们在使用一个npm包的时候常常会忘记了require其相互依赖的模块,咱们能够
借助如以下命令来查看此模块相互依赖的包都有哪些
更多命令请参看npm官方文档http://npmjs.org/doc/
参考:http://blog.csdn.net/dellheng/article/details/7076461
local安装和global安装区别:
npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差异只是有没有-g而已,好比:
npm install grunt # 本地安装
npm install -g grunt-cli # 全局安装
这两种安装方式有什么区别呢?从npm官方文档的说明来看,主要区别在于(后面经过具体的例子来讲明):
本地安装
1. 将安装包放在 ./node_modules 下(运行npm时所在的目录)
2. 能够经过 require() 来引入本地安装的包
全局安装
1. 将安装包放在 /usr/local 下
2. 能够直接在命令行里使用
本地安装
一、将安装包放在 ./node_modules 下(运行npm时所在的目录)
好比运行下面命令
npm install grunt --save-dev
那么,就会在当前目录下发现一个node_modules目录,进去后可以看到grunt这个包
casperchenMacBookPro:testUsemin casperchen$ ll
total 200
drwxr-xr-x 16 casperchen staff 544B 12 14 23:17 node_modules
进入node_modules
casperchenMacBookPro:node_modules casperchen$ ll
total 0
drwxr-xr-x 16 casperchen staff 544B 12 5 00:49 grunt
二、能够经过 require() 来引入本地安装的包
直接来个例子,咱们在项目根目录下建立test.js,里面的内容很简单
var grunt = require('grunt');grunt.log.writeln('hello grunt');
而后在控制台运行test.js
node test.js
而后就会看到以下输出
casperchenMacBookPro:testUsemin casperchen$ node test.js
hello grunt
全局安装
一、将安装包放在 /usr/local 下
运行以下命令
npm install -g grunt-cli
而后进入/usr/local/bin目录,就会发现grunt-cli已经被放置在下面了
casperchenMacBookPro:bin casperchen$ pwd
/usr/local/bin
casperchenMacBookPro:bin casperchen$ ll grunt
lrwxr-xr-x 1 root admin 39B 8 18 21:43 grunt -> ../lib/node_modules/grunt-cli/bin/grunt
可见,全局模块的真实安装路径在/usr/local/lib/node_modules/下,/usr/local/bin下的可执行文件只是软连接而已
二、能够直接在命令行里使用
实现细节在上面其实就讲到了,经过在`/usr/local/bin下建立软连接的方式实现。这里不赘述
更直观的例子
下面就直接看下,当咱们在项目目录下运行grunt task(task为具体的grunt任务名,自行替换)时,发生了什么事情。这里要借助node-inspector。
首先,没接触过node-inspector的童鞋能够参考以前的文章了解下
运行以下命令开启调试
node-inspector &
见到以下输出
casperchenMacBookPro:tmp casperchen$ node-inspector &
[1] 14390
casperchenMacBookPro:tmp casperchen$ Node Inspector v0.6.1
info - socket.io started
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.
接着,在当前任务下运行grunt任务
^CcasperchenMacBookPro:testUsemin casperchen$ node --debug-brk $(which grunt) dev
debugger listening on port 5858
接着,打开chrome浏览器,输入网址http://127.0.0.1:8080/debug?port=5858,就会自动进入断点调试状态,从一旁显示的tips能够看到,全局命令grunt其实就是/usr/local/lib/node_modules/grunt-cli/bin/grunt。
按下F8接着往下跑,就会进如Gruntfile.js,此时的grunt,是本地安装的一个node包,全局命令跟本地的包名字同样,挺有迷惑性的。软件自学网
更多:
http://www.cit.cn/tech/develop/node-js/2012/0817/996.html
http://www.cnblogs.com/walkerwang/archive/2013/04/05/3001001.html
linux npm安装:
就像NPM的官网(http://npmjs.org/ )上介绍的那样,安装NPM仅仅是一行命令的事情:
curl http://npmjs.org/install.sh | sh
这里详解一下这句命令的意思,curl http://npmjs.org/install.sh是经过curl命令获取这个安装shell脚本,按后经过管道符| 将获取的脚本交由sh命令来执行。这里若是没有权限会安装不成功,须要加上sudo来确保权限:
curl http://npmjs.org/install.sh | sudo sh
安装成功后执行npm命令,会获得一下的提示:
Usage: npm <command> where <command> is one of: adduser, apihelp, author, bin, bugs, c, cache, completion, config, deprecate, docs, edit, explore, faq, find, get, help, help-search, home, i, info, init, install, la, link, list, ll, ln, ls, outdated, owner, pack, prefix, prune, publish, r, rb, rebuild, remove, restart, rm, root, run-script, s, se, search, set, show, star, start, stop, submodule, tag, test, un, uninstall, unlink, unpublish, unstar, up, update, version, view, whoami
咱们以underscore为例,来展现下经过npm安装第三方包的过程。
npm install underscore
返回:
underscore@1.2.2 ./node_modules/underscore
因为一些特殊的网络环境,直接经过npm install命令安装第三方库的时候,常常会出现卡死的状态。幸运的是国内CNode社区的@fire9 同窗利用空余时间搭建了一个镜像的NPM资源库,服务器架设在日本,能够绕过某些没必要要的网络问题。你能够经过如下这条命令来安装第三方库:
npm --registry "http://npm.hacknodejs.com/ " install underscore
若是你想将它设为默认的资源库,运行下面这条命令便可:
npm config set registry "http://npm.hacknodejs.com/ "
设置以后每次安装时就能够不用带上—registry参数。值得一提的是还有另外一个镜像可用,该镜像地址是http://registry.npmjs.vitecho.com ,如需使用,替换上面两行命令的地址便可。
经过npm安装包。安裝好之後會自動被安裝到 /usr/local/bin 目錄下,而相依的函式庫也會自動安裝到/usr/local/lib/node 目錄下,實在是很是方便。
npm使用
npm init 会引导你建立一个package.json文件,包括名称、版本、做者这些信息等
使用package.json
在Pakcage.json所在目录npm install就能够安装了
在国内npm很慢,加速办法
换成镜像http://npm.taobao.org/
你可使用咱们定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm
:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
或者你直接经过添加 npm
参数 alias
一个新命令:
alias cnpm="npm --registry=https://registry.npm.taobao.org \ --cache=$HOME/.npm/.cache/cnpm \ --disturl=https://npm.taobao.org/dist \ --userconfig=$HOME/.cnpmrc" # Or alias it in .bashrc or .zshrc $ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \ --cache=$HOME/.npm/.cache/cnpm \ --disturl=https://npm.taobao.org/dist \ --userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc
从 registry.npm.taobao.org 安装全部模块. 当安装的时候发现安装的模块尚未同步过来, 淘宝 NPM 会自动在后台进行同步, 而且会让你从官方 NPMregistry.npmjs.org 进行安装. 下次你再安装这个模块的时候, 就会直接从 淘宝 NPM 安装了.
$ cnpm install [name]
直接经过 sync
命令立刻同步一个模块, 只有 cnpm
命令行才有此功能:
$ cnpm sync connect
固然, 你能够直接经过 web 方式来同步: /sync/connect
$ open https://npm.taobao.org/sync/connect
1.经过config命令
这种方法也是把所谓的user config写入到 ~/.npmrc文件的!!
https://cnodejs.org/topic/4f9904f9407edba21468f31e
npm config set registry https://registry.npm.taobao.org npm info underscore (若是上面配置正确这个命令会有字符串response)
node_modules
文件夹时提示该文件夹包含名称过长删除不了
cmd下rmdir /s/q your_app_dir
来删除
npm install rimraf -g
rimraf node_modules