npm与package.json

1.背景介绍

NPM是什么?
NPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。
npm的背后,是基于couchdb的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。

我们需要了解什么?
1.npm的安装、卸载、升级、配置
2.npm的使用:package的安装、卸载、升级、查看、搜索、发布
3.npm包的安装模式:本地 vs 全局
4.package.json:包描述信息
5.package版本:常见版本声明形式

2.知识剖析

npm包安装模式:
node包的安装分两种:本地安装、全局安装。两者的区别如下:
本地安装:npm install pkg,package会被下载到当前所在目录,也只能在当前目录下使用。
全局安装:npm install -g pkg,package会被下载到到特定的系统目录下,安装的package能够在所有目录下使用

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

其他package安装命令
运行如下命令,列出所有npm install可能的参数形式:

npm install --help
npm uninstall pkg:卸载
npm ls:查看当前目录安装了哪些package
npm info pkg:查看特定package的详细信息
npm update pkg:package更新
npm search pgk:搜索

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

设置proxy:npm set prox
查看proxy:npm get proxy
删除proxy:npm delete proxy
查看所有配置:npm config list
直接修改配置文件:npm config edit

3.常见问题

什么是package.json?

4.解决方案

假设当我们下载了node应用,这个node应用依赖于A、B、C三个包,如果没有package.json,我们需要人肉安装这个三个包(如果对版本有特定要求就更悲剧了):

npm install A
npm install B
npm install C

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

5.编码实战

npm 允许在package.json文件里面,使用scripts字段定义脚本命令。
"scripts": {"build": "node build.js"}
上面代码是package.json文件的一个片段,里面的scripts字段是一个对象。它的每一个属性,对应一段脚本。比如,build命令对应的脚本是node build.js.
命令行下使用npm run命令,就可以执行这段脚本。
npm run build
node build.js

6.扩展思考

package.json字段简介

package.json中最重要的属性是name和version两个属性,这两个属性是必须要有的,否则模块就无法被安装,这两个属性一起形成了一个npm模块的唯一标识符。模块中内容变更的同时,模块版本也应该一起变化。

name属性就是你的模块名称,下面是一些命名规则:
1.必须小于等于214个字节,包括前缀名称在内(如 x/xmodule)。
2.name属性会成为模块url、命令行中的一个参数或者一个文件夹名称,任何非url安全的字符在name中都不能使用,也不能以"_"或"."开头,不能含有大写字母
3.不要使用和node核心模块一样的名称,明早不要含有"js"和"node"。
4.name属性也许会被写在require()的参数中,所以最好取个简短而语义化的值。
5.创建一个模块前可以先到https://www.npmjs.com查查name是否已经被占用.

version:
package的版本,当package发生变化时,version也应该跟着一起变化,同时,version必须可以被npm依赖的一个node-semver模块解析。

description:
package的应用依赖模块,即别人要使用这个package,至少需要安装哪些东东。应用依赖模块会安装到当前模块的node_modules目录下。

devDependencies:
package的开发依赖模块,即别人要在这个package上进行开发。

常见版本声明形式:
1."~1.2.3" 是神马意思呢:
"~1.2.3" = ">=1.2.3 <1.3.0"

2."1.x.x"是什么意思呢:
"1.2.x" = ">=1.2.0 <1.3.0"

3.~version "约等于",^version "兼容版本

7.参考文献

npm package.json属性详解:http://www.cnblogs.com/tzyy/p/5193811.html

PPT:http://localhost:63341/PPT/PPT/JS-11-npm%E4%B8%8Epackage.json.html#/
视频:https://v.qq.com/x/page/w0539du6802.html

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

推荐阅读更多精彩内容