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用法幾乎一樣的
下一篇文章我再來談一談