package.json——發(fā)布要素
????在現(xiàn)代化的前端項(xiàng)目中都會(huì)有package.json文件的存在,其作用是項(xiàng)目的清單,包含項(xiàng)目中除script引入之外的所有依賴列表、項(xiàng)目名稱、編譯環(huán)境要求、最低運(yùn)行環(huán)境等等。
????package.json沒(méi)有嚴(yán)格的格式要求(對(duì)配置項(xiàng)的書寫順序、自己額外添加的字段),只需要滿足json文件的書寫規(guī)則即可,同時(shí)package.json 中最重要的兩個(gè)字段就是 name 和 version,它們都是必須的,如果沒(méi)有,就無(wú)法正常執(zhí)行 npm install 命令。npm 規(guī)定 package.json 文件是由名稱和版本號(hào)作為唯一標(biāo)識(shí)符的。
????以上是一個(gè)簡(jiǎn)單的package.json文件示例,示例包含的字段都會(huì)在發(fā)布npm包時(shí)起到一定作用:
name
?設(shè)置了應(yīng)用程序/軟件包的名稱,名稱必須少于 214 個(gè)字符,且不能包含空格,只能包含小寫字母、連字符(-
)或下劃線(_
),這是因?yàn)楫?dāng)軟件包在?npm
?上發(fā)布時(shí),它會(huì)基于此屬性獲得自己的 URL;名稱可以作為參數(shù)被傳入 require(""),用來(lái)導(dǎo)入模塊,所以應(yīng)當(dāng)盡可能的簡(jiǎn)短、語(yǔ)義化;名稱不能和其他模塊的名稱重復(fù),可以使用 npm view 命令查詢模塊名是否重復(fù),如果不重復(fù)就會(huì)提示 404。license
?指定軟件包的許可證,也就是使用協(xié)議上例中使用MIT此處不展開(kāi)說(shuō)明。keywords
?表明了軟件包的關(guān)鍵字,用于NPM搜索,和標(biāo)記軟件包的相關(guān)領(lǐng)域。version
?標(biāo)記應(yīng)用程序/軟件包版本。版本號(hào)的命名遵循語(yǔ)義化版本 2.0.0 規(guī)范,格式為:主版本號(hào). 次版本號(hào). 修訂號(hào)。npm命令:npm view xxx version就是查看對(duì)應(yīng)的項(xiàng)目version的。repository
?標(biāo)記軟件包的倉(cāng)庫(kù)地址,也可以直接寫明版本控制系統(tǒng)地址。description
?是應(yīng)用程序/軟件包的簡(jiǎn)短描述。homepage
?標(biāo)記了項(xiàng)目主頁(yè)地址(官方網(wǎng)站、源碼地址)。author
?標(biāo)明了包的作者,也可以使用對(duì)象的格式。contributors
?標(biāo)明了包的貢獻(xiàn)者,也可以使用對(duì)象的格式。bugs
?項(xiàng)目的bug反饋地址,此例中使用github的issues。private
?如果設(shè)置為?true
,則可以防止應(yīng)用程序/軟件包被意外地發(fā)布到?npm
,本例中設(shè)置為false,意為可以發(fā)布到npm公開(kāi)使用。engines
?設(shè)置了此軟件包/應(yīng)用程序在哪個(gè)版本的 Node.js 上運(yùn)行。browserslist
?用于告知要支持哪些瀏覽器(及其版本)。