NPM是什么?

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进行查看。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容