您的位置:首页 > 产品设计 > 产品经理

npm

2016-06-14 15:09 363 查看


nodejs npm常用命令

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

安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。
node的安装分为全局模式和本地模式。

一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下。

在全局模式下,Node包会被安装到Node的安装目录下的node_modules下。
全局安装命令为$npm install -g moduleName。

获知使用$npm set global=true来设定安装模式,$npm get global可以查看当前使用的安装模式。
示例:

npm install express 

默认会安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6
npm install <name> -g 

将包安装到全局环境中
但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令
npm install <name> --save 

安装的同时,将信息写入package.json中项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交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 init:会引导你创建一个package.json文件,包括名称、版本、作者这些信息等
16、npm root:查看当前包的安装路径

npm root -g:查看全局的包的安装路径
17、npm -v:查看npm安装的版本
更多命令请参看npm官方文档:https://www.npmjs.org/doc/ 

NPM小结:

nodejs的出现,可以算是前端里程碑式的一个事件,它让前端攻城狮们摆脱了浏览器的束缚,踏上了一个更加宽广的舞台。前端的可能性,从此更加具有想象空间。

随着一系列基于nodes的应用/工具的出现,工作中与nodejs打交道的机会越来越多。无论在node应用的开发,还是使用中,包管理都扮演着一个很重要的作用。NPM(node package manager),作为node的包管理工具,极大地便利了我们的开发工作,很有必要了解一下。


NPM是什么

NPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。

npm的背后,是基于couchdb的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。

npm官网: https://npmjs.org/

npm官方文档: https://npmjs.org/doc/README.html


我们需要了解什么

npm的安装、卸载、升级、配置
npm的使用:package的安装、卸载、升级、查看、搜索、发布
npm包的安装模式:本地 vs 全局
package.json:包描述信息
package版本:常见版本声明形式


npm包安装模式

在具体介绍npm包的管理之前,我们首先得来了解一下npm包的两种安装模式。


本地安装 vs 全局安装(重要)

node包的安装分两种:本地安装、全局安装。两者的区别如下,后面会通过简单例子说明
本地安装:package会被下载到当前所在目录,也只能在当前目录下使用。
全局安装:package会被下载到到特定的系统目录下,安装的package能够在所有目录下使用。


npm install pkg - 本地安装

运行如下命令,就会在当前目录下安装 
grunt-cli
 (grunt命令行工具)

npm install grunt-cli


安装结束后,当前目录下回多出一个 
node_modules
 目录,grunt-cli就安装在里面。同时注意控制台输出的信息:

grunt-cli@0.1.9 node_modules/grunt-cli

├── resolve@0.3.1

├── nopt@1.0.10 (abbrev@1.0.4)

└── findup-sync@0.1.2 (lodash@1.0.1, glob@3.1.21)


简单说明一下:
grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19
node_modules/grunt-cli:安装目录
resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来


npm install -g pkg- 全局安装

上面已经安装了grunt-cli,然后你跑到其他目录下面运行如下命令

grunt


果断提示你grunt命令不存在,为什么呢?因为上面只是进行了 本地安装 ,grunt命令只能在对应安装目录下使用。

-bash: grunt: command not found


如果为了使用grunt命令,每到一个目录下都得重新安装一次,那不抓狂才怪。肿么办呢?

很简单,采用全局安装就行了,很简单,加上参数 
-g
 就可以了

npm install -g grunt-cli


于是,在所有目录下都可以无压力使用 
grunt
 命令了。这个时候,你会注意到控制台输入的信息有点不同。主要的区别在于安装目录,现在变成了
/usr/local/lib/node_modules/grunt-cli
 ,
/usr/local/lib/node_modules/
 也就是之前所说的全局安装目录啦。

grunt-cli@0.1.9 /usr/local/lib/node_modules/grunt-cli

├── resolve@0.3.1

├── nopt@1.0.10 (abbrev@1.0.4)

└── findup-sync@0.1.2 (lodash@1.0.1, glob@3.1.21)



npm包管理

npm的包管理命令是使用频率最高的,所以也是我们需要牢牢记住并熟练使用的。其实无非也就是几个动作:安装、卸载、更新、查看、搜索、发布等。


安装最新版本的grunt-cli

npm install grunt-cli



安装0.1.9版本的grunt-cli

npm install grunt-cli@"0.1.9"



通过package.json进行安装

如果我们的项目依赖了很多package,一个一个地安装那将是个体力活。我们可以将项目依赖的包都在package.json这个文件里声明,然后一行命令搞定

npm install



其他package安装命令

运行如下命令,列出所有 
npm install
 可能的参数形式

npm install --help


输出如下,有兴趣的童鞋可以了解下

npm install <tarball file>

npm install <tarball url>

npm install <folder>

npm install <pkg>

npm install <pkg>@<tag>

npm install <pkg>@<version>

npm install <pkg>@<version range>



卸载grunt-cli

比如卸载grunt-cli

npm uninstall grunt-cli



卸载0.1.9版本的grunt-cli

npm uninstall grunt-cli@"0.1.9"



npm ls:查看安装了哪些包

运行如下命令,就可以查看当前目录安装了哪些package

npm ls


输出如下

/private/tmp/npm

└─┬ grunt-cli@0.1.9

  ├─┬ findup-sync@0.1.2

  │ ├─┬ glob@3.1.21

  │ │ ├── graceful-fs@1.2.3

  │ │ ├── inherits@1.0.0

  │ │ └─┬ minimatch@0.2.12

  │ │   ├── lru-cache@2.3.0

  │ │   └── sigmund@1.0.0

  │ └── lodash@1.0.1

  ├─┬ nopt@1.0.10

  │ └── abbrev@1.0.4

  └── resolve@0.3.1


输出如下,同样,如果是要查看package的全局安装信息,加上 
-g
 就可以


npm ls pkg:查看特定package的信息

运行如下命令,输出grunt-cli的信息

npm ls grunt-cli


输出的信息比较有限,只有安装目录、版本,如下:

/private/tmp/npm

└── grunt-cli@0.1.9


如果要查看更详细信息,可以通过 
npm info pkg
 ,输出的信息非常详尽,包括作者、版本、依赖等。

npm info grunt-cli



npm update pkg:package更新

npm update grunt-cli



npm search pgk:搜索

输入如下命令

npm search grunt-cli


返回结果如下

npm http GET http://registry.npmjs.org/-/all/since?stale=update_after&startkey=1375519407838

npm http 200 http://registry.npmjs.org/-/all/since?stale=update_after&startkey=1375519407838

NAME                  DESCRIPTION                                        AUTHOR            DATE              KEYWORDS

grunt-cli             The grunt command line interface.                  =cowboy =tkellen  2013-07-27 02:24

grunt-cli-dev-exitprocess The grunt command line interface.              =dnevnik          2013-03-11 16:19

grunt-client-compiler Grunt wrapper for client-compiler.                 =rubenv           2013-03-26 09:15  gruntplugin

grunt-clientside      Generate clientside js code from CommonJS modules  =jga              2012-11-07 01:20  gruntplugin



npm发布

这个命令我自己也还没实际用过,不误导大家,语法如下,也可参考官方对于package发布的说明 https://npmjs.org/doc/developers.html :

npm publish <tarball>

npm publish <folder>



NPM配置

npm的配置工作主要是通过 
npm config
 命令,主要包含增、删、改、查几个步骤,下面就以最为常用的proxy配置为例。


设置proxy

内网使用npm很头痛的一个问题就是代理,假设我们的代理是 http://proxy.example.com:8080,那么命令如下:

npm config set proxy http://proxy.example.com:8080


由于 
npm config set
 命令比较常用,于是可以如下简写

npm set proxy http://proxy.example.com:8080   



查看proxy

设置完,我们查看下当前代理设置

npm config get proxy


输出如下:

http://proxy.example.com:8080/


同样可如下简写:

npm get proxy



删除proxy

代理不需要用到了,那删了吧

npm delete proxy



查看所有配置

npm config list



直接修改配置文件

有时候觉得一条配置一条配置地修改有些麻烦,就直接进配置文件修改了

npm config edit



关于package.json

这货在官网似乎没有详细的描述,其实就是包的描述信息啦。假设当我们下载了node应用,这个node应用依赖于A、B、C三个包,如果没有package.json,我们需要人肉安装这个三个包(如果对版本有特定要求就更悲剧了):

npm install A

npm install B

npm install C


有了package.json,一行命令安装所有依赖。

npm install



package.json字段简介

字段相当多,但最重要的的是下面几个
name: package的名字(由于他会成为url的一部分,所以 non-url-safe 的字母不会通过,也不允许出现"."、"_"),最好先在 http://registry.npmjs.org/上搜下你取的名字是否已经存在
version: package的版本,当package发生变化时,version也应该跟着一起变化,同时,你声明的版本需要通过semver的校验(semver可自行谷歌)
dependencies: package的应用依赖模块,即别人要使用这个package,至少需要安装哪些东东。应用依赖模块会安装到当前模块的node_modules目录下。
devDependencies:package的开发依赖模块,即别人要在这个package上进行开发
其他:参见官网


package版本

在package.json里,你经常会在包名后看到类似"~0.1.0"这样的字符串,这就是包的版本啦。下面会列举最常见的版本声明形式,以及版本书写的要求:


常见版本声明形式

a、"~1.2.3" 是神马意思呢,看下面领悟

"~1.2.3" = ">=1.2.3 <1.3.0"

"~1.2" = ">=1.2.0 <1.3.0"

"~1" = ">=1.0.0 <1.1.0"


b、"1.x.x"是什么意思呢,继续自行领悟

"1.2.x" = ">=1.2.0 <1.3.0"

"1.x.x" = ">=1.0.0 <2.0.0"

"1.2" = "1.2.x"

"1.x" = "1.x.x"

"1" = "1.x.x"



版本书写要求

版本可以v开头,比如 v1.0.1(v只是可选)
1.0.1-7,这里的7是所谓的“构建版本号”,不理是神马,反正版本大于1.0.1
1.0.1beta,或者1.0.1-beta,如果1.0.1后面不是 “连字符加数字” 这种形式,那么它是pre release 版本,即版本小于 1.0.1
根据b、c,有:0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta


写在后面

内容只是简单地把最常见的命令,以及一些需要了解的内容列了出来。如要进一步了解,可参考官网说明。此外, 
npm help
 是我们最好的朋友,如果忘了有哪些命令,命令下有哪些参数,可通过help进行查看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: