package.json

edagarli發表於2014-04-17

最近看了下node.js

發現package.json還是挺有意思的。為了忘記,這裡備記下。


Node.js 的包是一個目錄,其中包含一個 JSON 格式的包說明檔案 package.json。嚴格符
合 CommonJS 規範的包應該具備以下特徵:
 package.json 必須在包的頂層目錄下;
 二進位制檔案應該在 bin 目錄下;
 JavaScript 程式碼應該在 lib 目錄下;
 文件應該在 doc 目錄下;
 單元測試應該在 test 目錄下。
Node.js 對包的要求並沒有這麼嚴格,只要頂層目錄下有 package.json,並符合一些規範
即可。當然為了提高相容性,我們還是建議你在製作包的時候,嚴格遵守 CommonJS 規範。


Node.js 在呼叫某個包時,會首先檢查包中 package.json 檔案的 main 欄位,將其作為
包的介面模組,如果 package.json 或 main 欄位不存在,會嘗試尋找 index.js 或 index.node 作
為包的介面。


package.json 是 CommonJS 規定的用來描述包的檔案,完全符合規範的 package.json 文
5
件應該含有以下欄位。
 name:包的名稱,必須是唯一的,由小寫英文字母、數字和下劃線組成,不能包含
空格。
6
 description:包的簡要說明。
 version:符合語義化版本識別 規範的版本字串。
 keywords:關鍵字陣列,通常用於搜尋。
 maintainers:維護者陣列,每個元素要包含 name、email (可選) web (可選)
7
欄位。
 contributors:貢獻者陣列,格式與maintainers相同。包的作者應該是貢獻者
陣列的第一個元素。
 bugs:提交bug的地址,可以是網址或者電子郵件地址。
8
 licenses:許可證陣列,每個元素要包含 type (許可證的名稱)和 url (連結到
許可證文字的地址)欄位。
 repositories:
倉庫託管地址陣列,
每個元素要包含 type(倉庫的型別, git )

9
url (倉庫的地址)和 path (相對於倉庫的路徑,可選)欄位。

 dependencies:包的依賴,一個關聯陣列,由包名稱和版本號組成。

下面是一個完全符合 CommonJS 規範的 package.json 示例:
{
"name": "mypackage",
"description": "Sample package for CommonJS. This package demonstrates the required
elements of a CommonJS package.",
"version": "0.7.0",
"keywords": [
"package",
"example"
],
"maintainers": [
{
"name": "Bill Smith",
"email": "bills@example.com",
}
],
"contributors": [
{
"name": "BYVoid",
"web": "http://www.byvoid.com/"
}
],
"bugs": {
"mail": "dev@example.com",
"web": "http://www.example.com/bugs"
},
"licenses": [
{
"type": "GPLv2",
"url": "http://www.example.org/licenses/gpl.html"
}
],
"repositories": [
{
"type": "git",
"url": "http://github.com/BYVoid/mypackage.git"
}
],
"dependencies": {
"webkit": "1.2",
"ssl": {
"gnutls": ["1.0", "2.0"],
"openssl": "0.9.8"
}
}
}