Node.js日記:包

- 包(Package)是 Node.js 最重要的支柱。
- Node.js 根據 CommonJS 規範實現了包機制,但不完全遵循。
- 包是在模塊基礎上更深一步的抽象,Node.js 的包類似於 C/C++ 的函數庫或者 Java/.Net 的類庫。它將某個獨立的功能封裝起來,用於發佈、更新、依賴管理和版本控制。
- 開發中使用 npm 來解決包的發佈和獲取需求。

CommonJS 包規範和 Node.js 包實現

CommonJS 規範的包應該具備以下特徵:

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

Node.js 對包的要求並沒有這麼嚴格,要求如下:

- 包是一個目錄,其中包含一個 JSON 格式的包說明文件 package.json;
- 但爲了提高兼容性,建議在製作包的時候,嚴格遵守 CommonJS 規範。

Node.js 在調用某個包時,會首先檢查包中 package.json 文件的 main 字段,將其作爲包的接口模塊,如果 package.json 或 main 字段不存在,會嘗試尋找 index.js 或 index.node 作爲包的接口。

package.json

package.json 是 CommonJS 規定的用來描述包的文件,完全符合規範的 package.json 文件應該含有以下字段。

- name :包的名稱,必須是唯一的,由小寫英文字母、數字和下劃線組成,不能包含空格。
- description :包的簡要說明。
- version :符合語義化版本識別規範的版本字符串。0.0.0
- keywords :關鍵字數組,通常用於搜索。
- maintainers :維護者數組,每個元素要包含 name、email(可選)、web (可選)字段。
- contributors :貢獻者數組,格式與 maintainers 相同。包的作者應該是貢獻者數組的第一個元素。
- bugs :提交 bug 的地址,可以是網址或者電子郵件地址。
- licenses :許可證數組,每個元素要包含 type(許可證的名稱)和 url(鏈接到許可證文本的地址)字段。
- repositories : 倉庫託管地址數組,每個元素要包含 type(倉庫的類型,如 git )
- url(倉庫的地址)和 path(相對於倉庫的路徑,可選)字段。
- dependencies :生產環境包的依賴,一個關聯數組,由包名稱和版本號組成。
- devDependencies:開發環境包的依賴,一個關聯數組,由包的名稱和版本號組成。

npm

npm 是 Node.js 官方提供的包管理工具,它已經成了 Node.js 包的標準發佈平臺。用於 Node.js 包的發佈、傳播、依賴控制。npm 提供了命令行工具,使你可以方便地下載、安裝、升級、刪除包,也可以讓你作爲開發者發佈並維護包。

常用的引用場景:

- 開發者從 npm 服務器下載別人編寫的第三方包到本地使用。
- 開發者從 npm 服務器下載並安裝別人編寫的命令行程序到本地使用。
- 開發者將自己編寫的包或命令行程序上傳到 npm 服務器供別人使用。

npm在安裝 Node.js 的時候已一併安裝了,不需要額外安裝。

使用 nmp 被牆問題

使用 npm 安裝包時候,會到https://www.npmjs.com/下載依賴,但這個網站是國外的,在下載依賴的時候會很慢或是下載失敗。

解決的辦法一般有兩種:

1)配置淘寶鏡像,淘寶 NPM 鏡像,與官方 npm 的同步頻率目前爲 10 分鐘一次。淘寶鏡像官網

npm config set registry=https//registry.npm.taobao.org 

2)安裝 cnpm,安裝完之後使用 cnpm 來操作。

npm install -g cnpm –registry=https//registry.npm.taobao.org 

包的相關命令

1)安裝包命令:

npm install [-g] 包名[@版本號] [-D]

- 帶有 -g,表示全局安裝,安裝到 Node.js 根據目錄 node_modules 文件夾中,用於命令行下使用,不帶有 -g 表示本地安裝,安裝到當前項目中 node_modules 文件夾中,並修改 package.json 中包依賴配置,用於當前項目用開發使用。

- 沒有帶版本號的話安裝的是最新版本,帶了版本號安裝指定版本。

- 不帶 -D 表示生產環境的包依賴,帶了 -D 表示開發環境的包依賴。

2)查看包命令:

npm list [-g] [包名]

- 帶有 -g,表示全局查看,不帶有 -g 表示本地查看。

- 帶有包名錶示查看特定包,不帶有包名錶示查看所有包。

3)更新包命令:

npm update [-g] [包名][@版本號]

- 帶有 -g,表示全局更新,不帶有 -g 表示本地更新。

- 帶有包名錶示更新特定包,不帶有包名錶示更新所有包。

- 沒有帶版本號的話更新到最新版本,帶了版本好更新到指定的版本。

4)卸載包命令:

npm uninstall [-g] 包名

- 帶有 -g,表示全局卸載,不帶有 -g 表示本地卸載。

全局包操作

npm install -g es-checker   // 安裝檢測 Node.js 對 ES6 工具
es-checker                  // 在命令行輸入這命令就可以查看 

npm list -g es-checker      // 查看 es-checker 包
npm list -g                 // 查看所有的包
npm update -g es-checker    // 更新 es-checker 包
npm uninstall -g es-checker // 卸載 es-checker 包 

本地包操作

1)創建包

- 首先建一個文件夾,例如 somepackage。

- 在這目錄裏打開 Windows 命令行(終端)

- 輸入命令 npm init 即可,根據提示輸入,作爲 package.json 文件的內容。
- 若想生成 package.json 內容都使用默認值,那麼輸入命令 npm init -y 按回車即可。

- 命令執行完之後,在 somepackage 目錄出現 package.json 文件。

- 自己手動在 somepackage 中新建一個 index.js 文件。

- 運行此包:

- node . 執行當前項目 pack.json 中 main 指向的 JavaScript 文件。
- npm run test 執行的是 scripts 中 test 字段對應命令。

2)安裝包,更新包,卸載包

npm install ejs
npm update ejs
npm list ejs
npm uninstall ejs

3)使用包

參考官方文檔,在當前項目中,新建兩個文件寫好下面的代碼,之後在命令行運行 node index.js 就可以看到效果。

// index.js
const ejs = require('ejs');
people = ['geddy', 'neil', 'alex'];
html = ejs.render('<%= people.join(", "); %>', {people: people});
console.log(html);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章