npm與package.json

1.背景介紹

NPM是什么?
NPM(node package manager)渐溶,通常稱為node包管理器辉浦。顧名思義,它的主要功能就是管理node包茎辐,包括:安裝宪郊、卸載掂恕、更新、查看弛槐、搜索懊亡、發(fā)布等。
npm的背后丐黄,是基于couchdb的一個(gè)數(shù)據(jù)庫(kù)斋配,詳細(xì)記錄了每個(gè)包的信息,包括作者灌闺、版本艰争、依賴、授權(quán)信息等桂对。它的一個(gè)很重要的作用就是:將開發(fā)者從繁瑣的包管理工作(版本甩卓、依賴等)中解放出來(lái),更加專注于功能的開發(fā)蕉斜。

我們需要了解什么逾柿?
1.npm的安裝、卸載宅此、升級(jí)机错、配置
2.npm的使用:package的安裝、卸載父腕、升級(jí)弱匪、查看、搜索璧亮、發(fā)布
3.npm包的安裝模式:本地 vs 全局
4.package.json:包描述信息
5.package版本:常見版本聲明形式

2.知識(shí)剖析

npm包安裝模式:
node包的安裝分兩種:本地安裝萧诫、全局安裝。兩者的區(qū)別如下:
本地安裝:npm install pkg,package會(huì)被下載到當(dāng)前所在目錄枝嘶,也只能在當(dāng)前目錄下使用帘饶。
全局安裝:npm install -g pkg,package會(huì)被下載到到特定的系統(tǒng)目錄下,安裝的package能夠在所有目錄下使用

通過(guò)package.json進(jìn)行安裝:
如果我們的項(xiàng)目依賴了很多package群扶,一個(gè)一個(gè)地安裝那將是個(gè)體力活及刻。我們可以將項(xiàng)目依賴的包都在package.json這個(gè)文件里聲明,然后一行命令搞定
npm install

其他package安裝命令
運(yùn)行如下命令竞阐,列出所有npm install可能的參數(shù)形式:

npm install --help
npm uninstall pkg:卸載
npm ls:查看當(dāng)前目錄安裝了哪些package
npm info pkg:查看特定package的詳細(xì)信息
npm update pkg:package更新
npm search pgk:搜索

NPM配置
npm的配置工作主要是通過(guò)npm config命令提茁,主要包含增、刪馁菜、改、查幾個(gè)步驟铃岔,下面就以最為常用的proxy配置為例:

設(shè)置proxy:npm set prox
查看proxy:npm get proxy
刪除proxy:npm delete proxy
查看所有配置:npm config list
直接修改配置文件:npm config edit

3.常見問題

什么是package.json汪疮?

4.解決方案

假設(shè)當(dāng)我們下載了node應(yīng)用峭火,這個(gè)node應(yīng)用依賴于A、B智嚷、C三個(gè)包卖丸,如果沒有package.json,我們需要人肉安裝這個(gè)三個(gè)包(如果對(duì)版本有特定要求就更悲劇了):

npm install A
npm install B
npm install C

有了package.json盏道,一行命令安裝所有依賴稍浆。
npm install

5.編碼實(shí)戰(zhàn)

npm 允許在package.json文件里面,使用scripts字段定義腳本命令猜嘱。
"scripts": {"build": "node build.js"}
上面代碼是package.json文件的一個(gè)片段衅枫,里面的scripts字段是一個(gè)對(duì)象。它的每一個(gè)屬性朗伶,對(duì)應(yīng)一段腳本弦撩。比如,build命令對(duì)應(yīng)的腳本是node build.js.
命令行下使用npm run命令论皆,就可以執(zhí)行這段腳本益楼。
npm run build
node build.js

6.擴(kuò)展思考

package.json字段簡(jiǎn)介

package.json中最重要的屬性是name和version兩個(gè)屬性,這兩個(gè)屬性是必須要有的点晴,否則模塊就無(wú)法被安裝感凤,這兩個(gè)屬性一起形成了一個(gè)npm模塊的唯一標(biāo)識(shí)符。模塊中內(nèi)容變更的同時(shí)粒督,模塊版本也應(yīng)該一起變化陪竿。

name屬性就是你的模塊名稱,下面是一些命名規(guī)則:
1.必須小于等于214個(gè)字節(jié)坠陈,包括前綴名稱在內(nèi)(如 x/xmodule)萨惑。
2.name屬性會(huì)成為模塊url、命令行中的一個(gè)參數(shù)或者一個(gè)文件夾名稱仇矾,任何非url安全的字符在name中都不能使用庸蔼,也不能以"_"或"."開頭,不能含有大寫字母
3.不要使用和node核心模塊一樣的名稱,明早不要含有"js"和"node"。
4.name屬性也許會(huì)被寫在require()的參數(shù)中贮匕,所以最好取個(gè)簡(jiǎn)短而語(yǔ)義化的值姐仅。
5.創(chuàng)建一個(gè)模塊前可以先到https://www.npmjs.com查查name是否已經(jīng)被占用.

version:
package的版本,當(dāng)package發(fā)生變化時(shí)刻盐,version也應(yīng)該跟著一起變化掏膏,同時(shí),version必須可以被npm依賴的一個(gè)node-semver模塊解析敦锌。

description:
package的應(yīng)用依賴模塊馒疹,即別人要使用這個(gè)package,至少需要安裝哪些東東乙墙。應(yīng)用依賴模塊會(huì)安裝到當(dāng)前模塊的node_modules目錄下颖变。

devDependencies:
package的開發(fā)依賴模塊生均,即別人要在這個(gè)package上進(jìn)行開發(fā)。

常見版本聲明形式:
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.參考文獻(xiàn)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腥刹,一起剝皮案震驚了整個(gè)濱河市马胧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衔峰,老刑警劉巖佩脊,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異垫卤,居然都是意外死亡威彰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門葫男,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抱冷,“玉大人,你說(shuō)我怎么就攤上這事梢褐⊥冢” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵盈咳,是天一觀的道長(zhǎng)耿眉。 經(jīng)常有香客問我,道長(zhǎng)鱼响,這世上最難降的妖魔是什么鸣剪? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮丈积,結(jié)果婚禮上筐骇,老公的妹妹穿的比我還像新娘。我一直安慰自己江滨,他們只是感情好铛纬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唬滑,像睡著了一般告唆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晶密,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天擒悬,我揣著相機(jī)與錄音,去河邊找鬼稻艰。 笑死懂牧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尊勿。 我是一名探鬼主播僧凤,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼用狱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了拼弃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤摇展,失蹤者是張志新(化名)和其女友劉穎吻氧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咏连,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盯孙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祟滴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片振惰。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖垄懂,靈堂內(nèi)的尸體忽然破棺而出骑晶,到底是詐尸還是另有隱情,我是刑警寧澤草慧,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布桶蛔,位于F島的核電站,受9級(jí)特大地震影響漫谷,放射性物質(zhì)發(fā)生泄漏仔雷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一舔示、第九天 我趴在偏房一處隱蔽的房頂上張望碟婆。 院中可真熱鬧,春花似錦惕稻、人聲如沸竖共。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肘迎。三九已至,卻和暖如春锻煌,著一層夾襖步出監(jiān)牢的瞬間妓布,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工宋梧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匣沼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓捂龄,卻偏偏與公主長(zhǎng)得像释涛,于是被迫代替她去往敵國(guó)和親加叁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 什么是 NPM npm之于Node唇撬,就像pip之于Python,gem之于Ruby,composer之于PHP它匕。 ...
    ihoey閱讀 6,248評(píng)論 2 36
  • npm是什么 NPM的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發(fā)工具...
    build1024閱讀 7,860評(píng)論 0 9
  • 問題描述:當(dāng)運(yùn)行Xcode8.1時(shí)窖认,編譯代碼成功豫柬,可運(yùn)行,控制臺(tái)出現(xiàn)如下打悠私: 解決辦法:意思是PhotoLibr...
    Kingsleeeey閱讀 3,957評(píng)論 0 2
  • 今天突然被拉進(jìn)一個(gè)新微信群烧给,原來(lái),去年楊眾籌百萬(wàn)重金懸賞“中國(guó)式眾籌”新名稱一事喝噪,沉寂半年后础嫡,今兒個(gè)又舊話重提。 ...
    7ce322bedc91閱讀 321評(píng)論 0 0
  • 今天看到越前大咖酝惧,主角是榴鼎,一個(gè)叫郭,廣場(chǎng)的人系奉,被稱為中國(guó)的巴菲特檬贰。 嗯,他的經(jīng)歷大概是缺亮,嗯翁涤,村出生,然后萌踱,嗯葵礼,從2...
    海綿小凡閱讀 912評(píng)論 0 0