1、什么是NPM?
NPM(node package manager),通常称为node包管理器,主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。NPM是基于couchdb一个数据库,详细记录了每个包的信息(作者、版本、依赖、授权信息等)
NPM官方网站:NPM官方网站
NPM官方文档:NPM官方文档
我们需要了解什么?
1、NPM的安装、卸载、升级、配置
2、NPM的使用:packer的安装、卸载】升级、查看、搜索、发布
3、NPM包的安装:本地安装 、全局安装
4、package.json:包描述信息
5、package版本:版本说明
NPM安装
本地安装:package会被下载到当前所在目录,只能爱当前目录下使用
全局安装:package会被下载到待定的系统目录下,安装的package能在所有目录下使用
npm install pkg-本地安装
运行如下命令,就会在当前目录下安装 grunt-cli (grunt命令行工具)
npm install grunt-cli
安装结束后,当前目录下回多出一个 node_modules 目录,grunt-cli就安装在里面。同时注意控制台输出的信息:
grunt-cli@1.2.0 /Users/user/Desktop/NPM
├─┬ findup-sync@0.3.0
├── grunt-known-options@1.1.0
├─┬ nopt@3.0.6
└── resolve@1.1.7
npmdemo@1.0.0:当前安装的package为grunt-cli,版本是1.2.0
/Users/user/Desktop/NPM:安装目录
nopt、resolve、findup-sync:依赖的包有nopt、resolve、findup-sync,它们各自的版本、依赖在后面的括号里列出来
npm install pkg-全局安装
上面已经安装了grunt-cli,然后你跑到其他目录下面运行如下命令
grunt
果断提示你grunt命令不存在,为什么呢?因为上面只是进行了 本地安装 ,grunt命令只能在对应安装目录下使用。
Fatal error: Unable to find local grunt.
如果为了使用grunt命令,每到一个目录下都得重新安装一次,因此,用全局安装,很简单,需要加上参数 -g
npm install -g grunt-cli
此时控制台输入的信息有点不同。主要的区别在于安装目录,现在变成了 /usr/local/lib/node_modules/grunt-cli/bin/grunt,/usr/local/lib,这就是全局安装
├─┬ findup-sync@0.3.0
├── grunt-known-options@1.1.0
├─┬ nopt@3.0.6
└── resolve@1.1.7
npm包管理
nam的包管理命令使用频率比较高,安装、卸载、更新、查看、搜索、发布等等
安装最新版本的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
卸载grunt-cli
npm uninstall grunt-cli
卸载0.1.9版本的grunt-cli
npm uninstall grunt-cli@"0.1.9"
npm ls:查看安装了哪些包,运行如下命令,就可以查看当前目录安装了哪些package
npm ls
/Users/user
├─┬ grunt-cli@1.2.0
│ ├─┬ findup-sync@0.3.0
│ │ └─┬ glob@5.0.15
│ │ ├─┬ inflight@1.0.6
│ │ │ └── wrappy@1.0.2
│ │ ├── inherits@2.0.3
│ │ ├─┬ minimatch@3.0.3
│ │ │ └─┬ brace-expansion@1.1.6
│ │ │ ├── balanced-match@0.4.2
│ │ │ └── concat-map@0.0.1
│ │ ├── once@1.4.0
│ │ └── path-is-absolute@1.0.1
│ ├── grunt-known-options@1.1.0
│ ├─┬ nopt@3.0.6
│ │ └── abbrev@1.0.9
│ └── resolve@1.1.7
└─┬ jsdoc@3.4.3
├── bluebird@3.4.6
├─┬ catharsis@0.8.8
│ └─┬ underscore-contrib@0.3.0
│ └── underscore@1.6.0
├── escape-string-regexp@1.0.5
├─┬ espree@3.1.7
│ ├── acorn@3.3.0
│ └── acorn-jsx@3.0.1
├── js2xmlparser@1.0.0
├─┬ klaw@1.3.1
│ └── graceful-fs@4.1.11
├── marked@0.3.6
├─┬ mkdirp@0.5.1
│ └── minimist@0.0.8
├─┬ requizzle@0.2.1
│ └── underscore@1.6.0
├── strip-json-comments@2.0.1
├── taffydb@2.6.2
└── underscore@1.8.3
npm ls pkg:查看特定package的信息,运行如下命令,输出grunt-cli的信息
npm ls grunt-cli
如果要查看更详细信息,可以通过 npm info pkg ,输出的信息非常详尽,包括作者、版本、依赖等。
npm info grunt-cli
npm search pga:搜索
npm update grunt-cli
npm发布
这个命令我自己也还没实际用过,不误导大家,语法如下,也可参考官方对于package发布的说明:package发布
NPM配置
npm的配置工作主要是通过nam config 命令,包含了增、删、改、查几个步骤,以proxy为例
关于package.json
Package.json 属性说明
name - 包名。
version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")。
keywords - 关键字
最后,简单地把最常见的命令,以及一些需要了解的内容列了出来。如要进一步了解,可参考官网说明。此外, npm help 是我们最好的朋友,如果忘了有哪些命令,命令下有哪些参数,可通过help进行查看。