node.js NPM 使用

时间:2022-02-04 17:15:44

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

下载npm源代码:
   https://github.com/isaacs/npm/tags

将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镜像。

http://npm.taobao.org/

NPM常用的命令有:

(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 NPM 使用

原因是什么呢?原来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. 可以直接在命令行里使用

本地安装

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 使用

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

node.js NPM 使用

更多:

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命令

npm config set registry https://registry.npm.taobao.org
npm info underscore (如果上面配置正确这个命令会有字符串response)

这种方法也是把所谓的user config写入到 ~/.npmrc文件的!! https://cnodejs.org/topic/4f9904f9407edba21468f31e

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

cmd下rmdir /s/q your_app_dir 来删除

npm install rimraf -g
rimraf node_modules