1. 程式人生 > >【npm的安裝、搭建獨立專案環境、常用命令以及package.json檔案內常見欄位詳述】

【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]
該方式安裝的包:

  1. 會把包安裝到node_modules目錄中.
  2. 不會修改package.json
  3. 執行npm install不會自動安裝該包

本地安裝——save(區域性安裝)
·
本地——save方式安裝的npm包,只在當前目錄下可用.
安裝命令:npm install [email protected] --save
該方式安裝的包:

  1. 會把包安裝到node_module目錄中.
  2. 會在package.json的dependencies屬性下新增包.
  3. 執行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不小心被髮布出去.

--------- dependenciesdevDependencies ---------
·
在開發階段,我們需要對開發的模組進行單元測試,這時在開發環境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私有倉庫,則將地址更改為私有倉庫的地址即可.