8.建立包

包是在模塊基礎上更深一步的抽象,它將某個獨立的功能封裝起來,用於發佈、更新、依賴管理和版本控制。
Node.js 的包是一個目錄,其中包含一個 JSON 格式的包說明文件package.json 。嚴格符合 CommonJS規範的包應該具有如下特徵: node

    1.package.json 必須在包的頂層目錄下;  
    2.二進制文件應該在 bin  目錄下;  
    3.JavaScript 代碼應該在 lib  目錄下;  
    4.文檔應該在 doc  目錄下;  
    5.單元測試應該在 test  目錄下。

Node.js 對包的要求並無這麼嚴格,只要頂層目錄下有 package.json ,並符合一些規範便可。固然爲了提升兼容性,咱們仍是建議你在製做包的時候,嚴格遵照 CommonJS 規範。git

1. 做爲文件夾的模塊web

模塊與文件是一一對應的。文件不只能夠是 JavaScript代碼或二進制代碼,還能夠是一個文件夾。最簡單的包,就是一個做爲文件夾的模塊。json

// 創建一個叫作 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:包的依賴,一個關聯數組,由包名稱和版本號組成。 
相關文章
相關標籤/搜索