【npm的安裝、搭建獨立專案環境、常用命令以及package.json檔案內常見欄位詳述】
任何一門計算機語言都包含了豐富的第三方庫,npm就是JavaScript這門語言的第三方庫管理工具,本文將詳細介紹JavaScript的包管理工具——npm.
在計算機中安裝Node.js時,預設會一併安裝npm包管理工具,我們可以輸入npm命令進行測試:
文章目錄
安裝npm包的幾種方式
npm包有兩種安裝方式:全域性安裝和區域性安裝.
全域性安裝
·
如果你想將其作為一個命令列工具,那麼你應該將其安裝到全域性.
全域性安裝可以讓你在任何目錄下使用這個包.
安裝命令:npm install -g <package>
·
補充:如果是Mac系統,則需要加上sudo(許可權問題),即:sudo npm install -g <package>
,包括下面的命令,都要加上sudo,回車後輸入當前使用者的密碼即可.
本地安裝(區域性安裝)
·
本地安裝的npm包,只在當前目錄下可用.
安裝命令:nom install [email protected]
該方式安裝的包:
- 會把包安裝到node_modules目錄中.
- 不會修改package.json
- 執行npm install不會自動安裝該包
本地安裝——save(區域性安裝)
·
本地——save方式安裝的npm包,只在當前目錄下可用.
安裝命令:npm install [email protected] --save
該方式安裝的包:
- 會把包安裝到node_module目錄中.
- 會在package.json的dependencies屬性下新增包.
- 執行nom install命令時,會自動安裝包到node_modules目錄中.
使用國內的映象站安裝
·
通過npm安裝JavaScript第三方庫時,訪問的是國外的站點,訪問速度會比較慢,此時我們可以使用國內的映象站,cnpm(需先下載此命令),詳細的使用方式請參考http://npm.taobao.org/
使用方式:cnpm install vue
解除安裝npm包
·
解除安裝全域性包:npm uninstall <package> -g
·
解除安裝本地:npm uninstall <package> -S, --save: Package will be removed from your dependencies. npm uninstall <package> -D, --save-dev: Package will be removed from your devDependencies.
以上就是npm包的安裝和解除安裝.
搭建獨立的專案環境
但是,當我們需要維護多個獨立的專案環境時(比如:專案一需要Vue2.5.10支援;而專案二需要最新的Vue2.5.17支援;),我們應該分別為專案一和專案二建立獨立的、與外界隔離的第三方庫環境,而不是在當前目錄下使用本地或者全域性方式安裝的npm包.
先建立一個資料夾,並將該資料夾初始化為npm包環境:
$ mkdir myproject
$ cd myproject
$ npm init -y // 使用預設的資訊初始化
如果想要自定義資訊,則需要使用npm init
命令,手動填寫資訊後,輸入yes即可.
需要填寫的資訊如下:
name 專案名稱
version 專案的版本號
description 專案的描述資訊
entry point 專案的入口檔案
test command 專案啟動時指令碼命令
git repository 如果你有 Git 地址,可以將這個專案放到你的 Git 倉庫裡
keywords 關鍵詞
author 作者
license 專案要發行的時候需要的證書
npm常用命令
檢視package資訊:
npm ls <package>
·
更新package:npm update <package>
·
搜尋package:nom search <package>
package.json檔案詳述
隨著專案的不斷豐富,package.json檔案也會不斷的複雜.
接下來,我們來看看幾個在上述中沒有的條目:
"private": true,
"dependencies": {
"antd": "^2.11.1",
"classnames": "^2.2.5"
},
"devDependencies": {
"axios": "^0.15.3",
"babel-eslint": "^6.1.2"
},
"bin": {
"dk-cli": "./bin/dk-cli.js"
},
"scripts": {
"start": "node index.js"
},
"engines": {
"node": ">=6.9.0",
"npm": ">=3.10.10"
}
"publishConfig": {
"registry": "http://gongsineibu/nexus/repository/npm-hosted/"
}
--------- private ---------
·
可選欄位,布林值.
如果值為true,npm會拒絕釋出,這可防止私有repositories不小心被髮布出去.
--------- dependencies 與 devDependencies ---------
·
在開發階段,我們需要對開發的模組進行單元測試,這時在開發環境devDependencies下就要安裝單元測試模組Mocha.·
而在生產環境,使用者直接使用專案,此時專案的開發已全部完成,不再需要單元測試模組了,加上只會影響效能.
dependencies指定了專案生產環境時所依賴的模組.
devDependencies指定了專案開發環境時所依賴的模組.
--------- scripts ---------
·
該欄位指定了執行指令碼命令的npm命令縮寫.
比如start指定了執行npm run start時,所要執行的命令.
·
下面的設定指定了npm run dev、nom run build、nom run unit、nom run rest、nom run lint時,所要執行的命令:"scripts": { "dev": "node build/dev-server.js", "build": "node build/build.js", "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run", "test": "npm run unit", "lint": "eslint --ext .js,.vue src test/unit/specs" }
--------- engines ---------
·
指定依賴的node版本.
--------- publishConfig ---------
·
當我們開發完自己的專案,想要將它釋出到Npm倉庫時,就需要用到這個屬性.
預設地址是:https://www.npmjs.com/
,將發往Npm公共倉庫.
在package.json檔案中不加這個屬性會預設發往Npm公共倉庫.
·
publishConfig欄位決定了我們的包將釋出到哪裡.
如果企業內部搭建了Npm私有倉庫,則將地址更改為私有倉庫的地址即可.