1. 程式人生 > >CommonJS包規範與NodeJS的包管理工具NPM

CommonJS包規範與NodeJS的包管理工具NPM

上一篇文章已經介紹了CommonJS
這裡就不贅述了

CommonJS包規範

包是什麼呢?
類比於git,是我們對於某種資料夾的叫法
git init 命令在當前資料夾中生成了隱藏檔案.git,我們就把這個檔案叫做倉庫
npm init 命令在當前資料夾中生成了配置檔案package.json,我們就把這個檔案叫做包

CommonJS包規範包括包結構和包描述檔案

包結構

如果嚴格按照規範來說
包目錄應包含以下檔案或目錄

  • package.json:包描述檔案
  • bin:存放可執行二進位制檔案的目錄
  • lib:存放js程式碼的目錄
  • doc:存放文件的目錄
  • test:存放單元測試用例程式碼的目錄

包描述檔案

package.json就位於包的根目錄
就是一個配置檔案
內部就是對於包的相關描述資訊

{
  "name": "demo",
  "version": "1.0.0",
  "description": "this is a demo",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "payson",
  "license": "ISC"
}

其實根據屬性名也能猜個差不多
規範字段解釋如下:

  • name:名
  • description:簡介
  • version:版本號
  • keywords:關鍵詞陣列
  • maintainers:維護者列表
  • contributors:貢獻者列表
  • bugs:可以反饋bug的網頁或郵箱地址
  • licenses:許可證列表
  • respositories:託管原始碼的位置列表
  • dependencies:依賴項列表
  • homepage:網站地址
  • os:作業系統支援列表
  • cpu:CPU架構支援列表
  • engine:支援的JS引擎列表
  • builten:是否內建在底層系統的標準組件
  • directories:目錄說明
  • implements:實現規範的列表
  • scripts:指令碼說明物件

除了規範之外,還有擴充套件的欄位:

  • authoer:作者
  • bin:配置為命令列工具
  • main:入口檔案
  • devDependencies:開發依賴項列表

NPM


NPM(node package manage)實踐了CommonJS的包規範
利用它,我們可以釋出、安裝和依賴第三方模組
我們下載Node的時候,其實已經內建了npm,所以我們不用再下載
NPM常用指令如下:

命令 含義
$ npm 檢視NPM幫助說明
$ npm -v 檢視當前NPM版本
$ npm init 初始化包(配置package.json)
$ npm <command> 檢視具體命令幫助說明
$ npm install <package> 安裝第三方包
$ npm uninstall <package> 解除安裝包
$ npm install <package> --save-dev 安裝包並將安裝資訊寫入package.json(devDependencies)
$ npm install <package> --dev 安裝第包並將安裝資訊寫入package.json(dependencies)
$ npm install <package> -g 全域性安裝第三方包
$ npm install <file-url> 安裝本地包
$ npm adduser 註冊npm賬號
$ npm publish <folder> 上傳包
$ npm owner ls <package-name> 檢視包擁有者
$ npm owner add <user> <package-name> 新增包擁有者
$ npm owner rm <user> <package-name> 刪除包擁有者
$ npm ls 分析包


簡單說幾個吧

幫助

npm檢視幫助

幫助列舉了所有的命令

npm -v 檢視當前npm版本

初始化包

npm init
輸入這個命令後
會讓你填寫包名、包簡介等等資訊
然後我們的檔案就會動態生成一個package.json檔案

如果我們的包要釋出的話,這些就要好好填寫了
包名就是釋出的名字
不過我們在本地練習,就直接一路回車就好了
此時就會發現package.json已經存在我們的目錄下了
當然我們也可以不使用這個命令,手動編寫package.json

依賴包安裝

安裝依賴包使用命令$ npm install <package>
比如說我下一個express

下載完畢後,放在了根目錄的node_modules下

第三方模組也可能依賴其他的第三方模組
如果直接下載會報錯(錯誤資訊會提示缺少什麼包)
那麼我們要想使用它,就必須下它所依賴的包

鉤子命令

在我們的package.json的scripts欄位提供了鉤子機制

"scripts": {
  "preinstall": "preinstall.js",
  "install": "install.js",
  "uninstall": "uninstall.js",
  "test": "test.js"
}

比如我們這樣寫
那麼在執行$ npm install <package>的時候
就會執行preinstall的屬性值preinstall.js指令碼
然後執行install的屬性值install.js指令碼
執行$ npm uninstall <package>的時候
又會執行uninstall.js指令碼做一些清理工作
執行$ npm test又會執行test.js

更多關於npm的資訊可以檢視官網:傳送門
實際上現在出現一個比npm還要好的包管理工具
其實和npm用法幾乎一樣的
下一篇文章我再來談一談