npm package.json文件解讀

每個Nodejs項(xiàng)目的根目錄下面俄精,一般都會有一個package.json文件询筏。該文件可以由npm init生成,定義了項(xiàng)目所需要的各種模塊竖慧,以及項(xiàng)目的配置信息(比如名稱嫌套、版本、許可證等元數(shù)據(jù))圾旨。

package.json文件內(nèi)部就是一個JSON對象踱讨,該對象的每一個成員就是當(dāng)前項(xiàng)目的一項(xiàng)設(shè)置。

基本字段

  1. name

    項(xiàng)目名稱(npm包名)砍的。必需字段

  2. version

    項(xiàng)目版本痹筛。必需字段。
    版本號的格式為"1.0.0",分別代表“主版本號.次版本號.修訂號”廓鞠。它的遞增規(guī)則如下:

    • 主版本號:當(dāng)你做了不兼容的API 修改帚稠;
    • 次版本號:當(dāng)你做了向下兼容的功能性新增;
    • 修訂號:當(dāng)你做了向下兼容的問題修正床佳。

    在實(shí)際使用中滋早,一般可以看到各種形式的版本號:

    *: 任意版本
    1.1.0: 指定版本
    ~1.1.0: 1.1.0 <= 版本 < 1.2.0
    ^1.1.0: 1.1.0 <= 版本 < 2.0.0
    latest:安裝最新版本。
    
    • *表示任意版本砌们;
    • ~前綴表示杆麸,安裝大于指定的這個版本搁进,并且匹配到 x.y.z 中 z 最新的版本;
    • ^前綴在 ^0.y.z 時的表現(xiàn)和 ~0.y.z 是一樣的角溃,然而 ^1.y.z 的時候拷获,就會匹配到 y 和 z 都是最新的版本;
    • 特殊的是减细,當(dāng)版本號為 ^0.0.z 或者 ~0.0.z 的時候,考慮到 0.0.z 是一個不穩(wěn)定版本赢笨, 所以它們都相當(dāng)于 =0.0.z未蝌。
  3. author && contributors

    項(xiàng)目作者以及貢獻(xiàn)者。author是字符串形式的作者名茧妒,contributors是一個項(xiàng)目貢獻(xiàn)者數(shù)組萧吠。

  4. description && keywords

    項(xiàng)目描述和項(xiàng)目關(guān)鍵字。幫助人們在使用npm search時找到這個包桐筏。

  5. license

    許可證纸型。

功能性字段

  1. scripts

    定義腳本命令。它的每一個屬性梅忌,對應(yīng)一段腳本狰腌。并且可以在命令行下使用npm run命令執(zhí)行這段腳本。

    npm 腳本的原理非常簡單牧氮。每當(dāng)執(zhí)行npm run琼腔,就會自動新建一個 Shell,在這個 Shell 里面執(zhí)行指定的腳本命令踱葛。因此丹莲,只要是 Shell(一般是 Bash)可以運(yùn)行的命令,就可以寫在 npm 腳本里面尸诽。

    比較特別的是甥材,npm run新建的這個 Shell,會將當(dāng)前目錄的node_modules/.bin子目錄加入PATH變量性含,執(zhí)行結(jié)束后洲赵,再將PATH變量恢復(fù)原樣。

    更多可參考阮老師的 npm scripts 使用指南

  2. dependencies && devDependencies

    npm install在安裝node模塊時胶滋,有兩種命令參數(shù)可以把它們的信息寫入package.json文件: –save以及–save-dev板鬓。–save會把依賴包名稱添加到package.json文件dependencies鍵下,–save-dev則添加到package.json文件devDependencies鍵下究恤。

    dependencies字段指定了項(xiàng)目生產(chǎn)環(huán)境中需要的依賴俭令,即正常運(yùn)行該包時所依賴的模塊,devDependencies指定項(xiàng)目開發(fā)所需要的依賴項(xiàng)部宿,像一些進(jìn)行單元測試之類的包抄腔,比如grunt-contrib-uglify瓢湃,我們用它混淆js文件,它們不會被部署到生產(chǎn)環(huán)境赫蛇。

    它們都指向一個對象绵患。該對象的各個成員,分別由模塊名和對應(yīng)的版本要求組成悟耘,表示依賴的模塊及其版本范圍落蝙。

  3. bin

    用來指定各個內(nèi)部命令對應(yīng)的可執(zhí)行文件的位置。

    例如:

    "bin": {
        "someTool": "./bin/someTool.js"
    }
    

    上面代碼指定暂幼,someTool 命令對應(yīng)的可執(zhí)行文件為 bin 子目錄下的 someTool.js

  4. main

    指定包的入口程序文件筏勒。這個字段的默認(rèn)值是模塊根目錄下面的index.js。

  5. config

    用于向環(huán)境變量輸出值旺嬉。

    比如:

    {
        // ...
        "config" : { "port" : "8080" },
    }
    

    然后通過process.env.npm_package_config_port讀取該值管行。

其他字段

  1. engines

    指定node的工作版本

  2. man

    指定當(dāng)前模塊的man文檔的位置。

  3. preferGlobal

    布爾類型值邪媳,表示當(dāng)用戶不將該模塊安裝為全局模塊時(即不用–global參數(shù))捐顷,要不要顯示警告。

    ...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雨效,一起剝皮案震驚了整個濱河市迅涮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌设易,老刑警劉巖逗柴,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顿肺,居然都是意外死亡戏溺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門屠尊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旷祸,“玉大人,你說我怎么就攤上這事讼昆⊥邢恚” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵浸赫,是天一觀的道長闰围。 經(jīng)常有香客問我,道長既峡,這世上最難降的妖魔是什么羡榴? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮运敢,結(jié)果婚禮上校仑,老公的妹妹穿的比我還像新娘忠售。我一直安慰自己,他們只是感情好迄沫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布稻扬。 她就那樣靜靜地躺著,像睡著了一般羊瘩。 火紅的嫁衣襯著肌膚如雪泰佳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天尘吗,我揣著相機(jī)與錄音乐纸,去河邊找鬼。 笑死摇予,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吗跋。 我是一名探鬼主播侧戴,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跌宛!你這毒婦竟也來了酗宋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤疆拘,失蹤者是張志新(化名)和其女友劉穎蜕猫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哎迄,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡回右,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漱挚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翔烁。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旨涝,靈堂內(nèi)的尸體忽然破棺而出蹬屹,到底是詐尸還是另有隱情,我是刑警寧澤白华,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布慨默,位于F島的核電站,受9級特大地震影響弧腥,放射性物質(zhì)發(fā)生泄漏厦取。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一鸟赫、第九天 我趴在偏房一處隱蔽的房頂上張望蒜胖。 院中可真熱鬧消别,春花似錦、人聲如沸台谢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朋沮。三九已至蛇券,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間樊拓,已是汗流浹背纠亚。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筋夏,地道東北人蒂胞。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像条篷,于是被迫代替她去往敵國和親骗随。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理赴叹,服務(wù)發(fā)現(xiàn)鸿染,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 原文:http://javascript.ruanyifeng.com/nodejs/packagejson.ht...
    水墨熊貓閱讀 1,183評論 0 2
  • 什么是 NPM npm之于Node乞巧,就像pip之于Python,gem之于Ruby,composer之于PHP涨椒。 ...
    ihoey閱讀 6,248評論 2 36
  • npm是什么 NPM的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發(fā)工具...
    build1024閱讀 7,860評論 0 9
  • 原文鏈接:http://www.mujiang.info/translation/npmjs/files/pack...
    R_X閱讀 1,021評論 0 1