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