8.創建包
阿新 • • 發佈:2017-12-02
規範 網址 req 單元測試 代碼 目錄 許可 keywords fun
包是在模塊基礎上更深一步的抽象,它將某個獨立的功能封裝起來,用於發布、更新、依賴管理和版本控制。
Node.js 的包是一個目錄,其中包含一個 JSON 格式的包說明文件package.json 。嚴格符合 CommonJS規範的包應該具備以下特征:
1.package.json 必須在包的頂層目錄下; 2.二進制文件應該在 bin 目錄下; 3.JavaScript 代碼應該在 lib 目錄下; 4.文檔應該在 doc 目錄下; 5.單元測試應該在 test 目錄下。
Node.js 對包的要求並沒有這麽嚴格,只要頂層目錄下有 package.json ,並符合一些規範即可。當然為了提高兼容性,我們還是建議你在制作包的時候,嚴格遵守 CommonJS 規範。
1. 作為文件夾的模塊
模塊與文件是一一對應的。文件不僅可以是 JavaScript代碼或二進制代碼,還可以是一個文件夾。最簡單的包,就是一個作為文件夾的模塊。
// 建立一個叫做 somepackage 的文件夾,在其中創建 index.js exports.hello = function(){ console.log("hello."); }; // 然後在 somepackage 之外建立 getpackage.js ,內容如下: var somePackage = require("./somepackage"); somePackage.hello(); // hello // 我們使用這種方法可以把文件夾封裝為一個模塊,即所謂的包。包通常是一些模塊的集合,在模塊的基礎上提供了更高層的抽象,相當於提供了一些固定接口的函數庫。 通過定制 package.json,我們可以創建更復雜、更完善、更符合規範的包用於發布。
package.json
在前面例子中的 somepackage 文件夾下,我們創建一個叫做 package.json 的文件,內容如下所示:
{ "main" : "./lib/interface.js" } // 然後將 index.js 重命名為 interface.js 並放入lib子文件夾下。以同樣的方式再次調用這個包,依然可以正常使用。 // Node.js 在調用某個包時,會首先檢查包中 package.json 文件的 main 字段,將其作為包的接口模塊,如果 package.json或main字段不存在,會嘗試尋找 index.js 或 index.node 作為包的接口。
package.json 是 CommonJS 規定的用來描述包的文件,完全符合規範的 package.json文件應該含有以下字段。
1.name:包的名稱,必須是唯一的,由小寫英文字母、數字和下劃線組成,不能包含空格。 2.description:包的簡要說明。 3.version:符合語義化版本識別規範的版本字符串。 4.keywords :關鍵字數組,通常用於搜索。 5.maintainers:維護者數組,每個元素要包含name、email(可選)、web (可選)字段。 6.contributors:貢獻者數組,格式與maintainers相同。包的作者應該是貢獻者數組的第一個元素。 7.bugs:提交bug的地址,可以是網址或者電子郵件地址。 8.licenses :許可證數組,每個元素要包含 type (許可證的名稱)和 url (鏈接到許可證文本的地址)字段。 9.repositories:倉庫托管地址數組,每個元素要包含 type (倉庫的類型,如 git )、url(倉庫的地址)和 path (相對於倉庫的路徑,可選)字段。 10.dependencies:包的依賴,一個關聯數組,由包名稱和版本號組成。
8.創建包