package.json 可以通過 npm init
來交互式地創(chuàng)建馏慨。
package.json 中可寫的內(nèi)容非常多重慢,以下講解字段的內(nèi)容。
name 字段 和 version 字段
name 和 version 字段是 package.json 文件中最重要的字段。這是必須的字段石抡,如果你的 npm 包沒有指定這兩個字段轻黑,將無法被安裝糊肤。name 和 version 字段被假定組合成一個唯一的標(biāo)識符。包內(nèi)容的更改和包版本的更改是同步的氓鄙。
因此馆揉,一般我們認(rèn)為一個最簡單的 package.json 文件如下所示:
{
"name" : "xxx",
"version" : "0.0.1",
}
另外,對于 name 字段的命名有如下規(guī)則限制:
- name 的長度必須小于等于214個字符抖拦。
- name 不能以"."(點)或者"_"(下劃線)開頭升酣。
- name 中不能包含大寫字母。
- name 最終將被用作URL的一部分态罪、命令行的參數(shù)和文件夾名拗踢。因此,name 不能含有非URL安全的字符向臀。
scripts 字段
scripts 指定了運行腳本命令的 npm 命令行縮寫巢墅,比如 start 指定了運行 npm run start
時,所要執(zhí)行的命令券膀。
下面的設(shè)置指定了 npm run dev君纫、npm run dist、npm run pub芹彬、npm run start蓄髓、npm run test
時,所要執(zhí)行的命令舒帮。
"scripts": {
"dev": "anyproxy --port 8080 --rule proxy.js & npm run start",
"dist": "cross-env NODE_ENV=production node ./tools/script.js",
"pub": "npm run dist",
"start": "cross-env NODE_ENV=development node ./tools/script.js",
"test": "node ./test.js",
}
我們從上面也可以看出会喝,我們可以在一個字段命令中運行另外一個字段陡叠。
bin 字段
bin 字段用來指定各個內(nèi)部命令對應(yīng)的可執(zhí)行文件的位置,一般而言肢执,對于需要全局安裝的包枉阵,我們都有該字段:
"bin": {
"myCommand": "./bin/index.js"
}
上面的代碼中指定,myCommand
命令對應(yīng)的可執(zhí)行文件在同級別目錄下的 bin/index.js
中预茄,因此 npm 在安裝該包的時候就會在 node_modules/.bin
的目錄下建立符號鏈接兴溜,對于全局安裝的包,由于 node_modules/.bin
會在運行時加入系統(tǒng)的 PATH 變量耻陕,因此可以直接通過命令來調(diào)用腳本拙徽。
另外,如果我們是在項目內(nèi)安裝包诗宣,也可以通過 npx myCommand
的方式來進(jìn)行調(diào)用膘怕。
main 字段
main 字段指定了加載的入口文件,require('moduleName')
就會加載這個文件召庞。
對于 Node 來說岛心,這個字段的默認(rèn)值是模塊根目錄下面的 index.js。
config 字段
config 字段可以添加命令行的環(huán)境變量裁眯,例如下面的 package.json 文件:
{
"name" : "buluo",
"config" : { "port" : "8080" },
"scripts" : { "start" : "node index.js" }
}
在 index.js 中鹉梨,我們可以直接使用該環(huán)境變量:
http
.createServer(...)
.listen(process.env.npm_package_config_port)
一些其他的描述性字段
接下來我們介紹一些描述性字段,這些描述性字段一般會在 npm 包的檢索穿稳、管理等中起到一定作用存皂。
keywords :npm 包的關(guān)鍵字,keywords 是一個字符串的數(shù)組逢艘。它可以幫助人們在使用 npm search
時找到這個包旦袋。
homepage :項目主頁的 url。
bugs :改項目的 issue 跟蹤頁面或這報告 issue 的 email 地址它改。這對使用這個包遇到問題的用戶會有幫助疤孕,例如:
{
"url" : "https://github.com/owner/project/issues",
"email" : "project@hostname.com"
}
license :指定該 npm 包所使用的協(xié)議。
author:包作者名字央拖,一般使用數(shù)組或者字符串祭阀,格式如下:
{
"name": "Barney Rubble",
"email": "b@rubble.com",
"url": "http://barnyrubble.tumblr.com/"
}
或者
"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
contributors: 貢獻(xiàn)者列表,是一個數(shù)組鲜戒,每一個單位的格式和 anthor 相同专控。
repository:指明你的代碼被托管在何處,這對那些想要參與到這個項目中的人來說很有幫助遏餐。如果 git 倉庫在 github 上伦腐,用 npm docs
命令將會找到你,例如:
{
"type": "git",
"url": "https://github.com/npm/npm.git"
}
以上便是對一部分 pacakge.json 的字段的介紹失都,實際上柏蘑,package.json 的字段不止這些幸冻,但是一般而言,了解以上字段已經(jīng)足夠我們?nèi)粘5膶W(xué)習(xí)和使用了咳焚。
更多字段可以參考官方文檔