讀懂package.json

作為一個前端工程師捻爷,不斷地去學習前端新技術是必須的姻僧。在這過程中规丽,不斷接觸開源項目是必不可少的。github上的開源項目撇贺,我們發(fā)現(xiàn)大多數(shù)項目下都有一個package.json文件赌莺,package.json存儲的是一個嚴格的json對象。那么今天分析一下package.json中的字段意義显熏。

本文主要是對npm documentpackage.json的簡單翻譯

name

在package.json中最重要的兩個字段是name和version雄嚣,如果沒有這兩個字段晒屎,npm無法安裝你的包喘蟆。name和version就像是你的項目身份證,且必須是唯一的鼓鲁。如果你的包做了改動蕴轨,那么version也應該改動。
一些規(guī)則:

  • name少于214字符
  • name不可以以._開頭
  • name應是URL安全的字符骇吭,因為name會出現(xiàn)在URL中(git clone XXX

version

version應滿足[major, minor, patch]的格式橙弱,version必須能夠被node-semver解析的. semver給出了version的規(guī)則限定。

description

項目的描述信息

keywords

項目的一些關鍵字。有助于用戶通過關鍵字搜索到你的項目

homepage

一個指向你項目主頁的url

bugs

當用戶發(fā)現(xiàn)了你的bugs時棘脐,可以在這里找到你并反饋給你:

{
   "url" : "https://github.com/owner/project/issues",
   "email" : "project@hostname.com"
}

license

指明你的項目許可證斜筐,讓用戶知道以何種權限使用你的項目

people fields: author, contributors

宣誓你主權的地方啦

"author":{
    "name": "xinhong",
    "email": "xinhong@anjuke.com"
}

files

表明項目下的哪些文件是重要的。效果類似于.gitignore文件蛀缝,區(qū)別是前者包含性顷链,后者排除性。

main

指向你項目入口文件屈梁。比如項目名為foo嗤练,那么用戶需要使用你的項目時,需要書寫代碼require('foo'),并且你的入口文件需要拋出這個對象

repository

指明你的項目倉庫地點在讶。這有助于其他人能夠幫助你一起維護項目煞抬,最常見的就是GitHub倉庫啦:

"repository" :
 {
    "type" : "git",
    "url" : "https://github.com/npm/npm.git"
 }

scripts

scripts包含了在項目開發(fā)過程會使用的腳本命令,我們可以運行npm run command-name來執(zhí)行它們:

"scripts":{
   "start": "node server.js"
}

dependencies

For production: 指明你項目生產(chǎn)環(huán)境時的依賴构哺,即別人使用你的項目代碼時必須依賴某些插件方可使用革答。在這里需要特別說明一下關于依賴項目version的范圍規(guī)則:

  • version :必須滿足規(guī)定的版本
  • >version :大于某個版本
  • >=version :大于等于某個版本
  • <version :小于某個版本
  • <=version :小于等于某個版本
  • ~version :大約等于某個版本。若指明minor遮婶,不允許超越minor;若未指明minor蝗碎,則minor可變
  • ^version :兼容性版本。從左非零版本數(shù)值限定旗扑,之后版本數(shù)值可變
  • 1.2.x :指定某個版本數(shù)值可變
  • http://... :指定鏈接
  • * :任意版本
  • ...
// ~
~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0
~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 (Same as 1.2.x)
~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.x)
~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0
~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0 (Same as 0.2.x)
~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x)

// ^
^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4

devDependencies

For development: 當其他開發(fā)者需要繼續(xù)開發(fā)你的項目時蹦骑,需要安裝的依賴。

engines

用于指明你的項目運行依賴的node版本或npm版本

{
    "engines":{
       "node": ">=0.10.3",
       "npm": "~1.0.20"
}
}

更多的參數(shù)可以查看這個文檔

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末臀防,一起剝皮案震驚了整個濱河市眠菇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袱衷,老刑警劉巖捎废,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異致燥,居然都是意外死亡登疗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門嫌蚤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辐益,“玉大人,你說我怎么就攤上這事脱吱≈钦” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵箱蝠,是天一觀的道長续捂。 經(jīng)常有香客問我垦垂,道長,這世上最難降的妖魔是什么牙瓢? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任劫拗,我火速辦了婚禮,結(jié)果婚禮上矾克,老公的妹妹穿的比我還像新娘杨幼。我一直安慰自己,他們只是感情好聂渊,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布差购。 她就那樣靜靜地躺著,像睡著了一般汉嗽。 火紅的嫁衣襯著肌膚如雪欲逃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天饼暑,我揣著相機與錄音稳析,去河邊找鬼。 笑死弓叛,一個胖子當著我的面吹牛彰居,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撰筷,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼陈惰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毕籽?” 一聲冷哼從身側(cè)響起抬闯,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎关筒,沒想到半個月后溶握,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蒸播,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年睡榆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袍榆。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡胀屿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜡塌,到底是詐尸還是另有隱情碉纳,我是刑警寧澤勿负,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布馏艾,位于F島的核電站劳曹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏琅摩。R本人自食惡果不足惜铁孵,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望房资。 院中可真熱鬧蜕劝,春花似錦、人聲如沸轰异。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搭独。三九已至婴削,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間牙肝,已是汗流浹背唉俗。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留配椭,地道東北人虫溜。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像股缸,于是被迫代替她去往敵國和親衡楞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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

  • npm做為Javascript項目的包管理工具敦姻,由于其與Node.js的緊密配合(npm和Node.js出自一人之...
    CodeLoam閱讀 788評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理寺酪,服務發(fā)現(xiàn),斷路器替劈,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 原文鏈接:http://www.mujiang.info/translation/npmjs/files/pack...
    R_X閱讀 1,021評論 0 1
  • npm是什么 NPM的全稱是Node Package Manager寄雀,是隨同NodeJS一起安裝的包管理和分發(fā)工具...
    build1024閱讀 7,860評論 0 9
  • 原文:http://javascript.ruanyifeng.com/nodejs/packagejson.ht...
    水墨熊貓閱讀 1,183評論 0 2