n=NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。有了NPM,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。npms安装:

 

 

将npm源代码解压到D:\npmjs目录中。

   在命令提示符窗口中执行下面的操作,完成npm的安装:



D:\>cd npmjs
D:\npmjs>node cli.js install -gf


   另外:



node cli.js install npm -gf //可以安装最新版的NPM
node cli.js install npm@1.0.105 -gf //可以安装指定版本的NPM


   上面两种方法都是通过网络从代码库中下载并安装,但是代码库一般只保留最近的两个版本。

NPM安装完成后,将"D:\nodejs\node_modules"加入系统环境变量NODE_PATH中。

 

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' ]

 

最好设置下国内镜像要不然下载会很慢。淘宝有个npm镜像。

 

 

      NPM常用的命令有:

      (1)$ npm install moduleNames

               安装Node模块

               注意事项:如果在使用模块的时候不知道其名字,可以通过网站按照

                                索引值找到想要的模块。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 NPM 使用_json

原因是什么呢?原来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其相互依赖的模块,我们可以

                     借助如如下命令来查看此模块相互依赖的包都有哪些

 

 ​

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. 可以直接在命令行里使用


本地安装


1、将安装包放在 ./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


2、可以通过 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


全局安装


1、将安装包放在 /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下的可执行文件只是软链接而已


2、可以直接在命令行里使用


实现细节在上面其实就讲到了,通过在`/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。

node.js NPM 使用_命令行_02

按下F8接着往下跑,就会进如Gruntfile.js,此时的grunt,是本地安装的一个node包,全局命令跟本地的包名字一样,挺有迷惑性的。​​软件自学网​

node.js NPM 使用_安装包_03

 

 linux npm安装:

就像NPM的官网 上介绍的那样,安装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安装包。安裝好之後會自動被安裝到 /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命令

npm config set registry https://registry.npm.taobao.org 
npm info underscore (如果上面配置正确这个命令会有字符串response)
这种方法也是把所谓的user config写入到 ~/.npmrc文件的!!

 

​node_modules​​文件夹时提示该文件夹包含名称过长删除不了

 cmd下​​rmdir /s/q your_app_dir​​ 来删除

npm install rimraf -g
rimraf node_modules