1. 程式人生 > >package.json 檔案詳解

package.json 檔案詳解

package.json 檔案 例項

{   "name": "systemName",   "version": "1.0.0",   "description": "系統描述",   "author": "天馬行空",   "private": true,   "scripts": {     "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",     "start": "npm run dev",     "e2e": "node test/e2e/runner.js",     "test": "npm run e2e",     "build": "node build/build.js"   },   "dependencies": {     "vue": "^2.5.2",     "vue-router": "^3.0.1"   },   "devDependencies": {     "autoprefixer": "^7.1.2",     "babel-core": "^6.22.1",     "babel-helper-vue-jsx-merge-props": "^2.0.3",     "babel-loader": "^7.1.1",     "webpack-dev-server": "^2.9.1",     "webpack-merge": "^4.1.0"   },   "engines": {     "node": ">= 6.0.0",     "npm": ">= 3.0.0"   },   "browserslist": [     "> 1%",     "last 2 versions",     "not ie <= 8"   ] }

欄位描述

scripts欄位 

scripts指定了執行指令碼命令的npm命令列縮寫,比如start指定了執行npm run start時,所要執行的命令。

下面的設定指定了npm run preinstallnpm run postinstallnpm run startnpm run test時,所要執行的命令。

"scripts": {
    "preinstall": "echo here it comes!",
    "postinstall": "echo there it goes!",
    "start": "node index.js",
    "test": "tap test/*.js"
}

dependencies欄位 

dependencies欄位指定了專案執行所依賴的模組

devDependencies欄位 

devDependencies指定專案開發所需要的模組。

它們都指向一個物件。該物件的各個成員,分別由模組名和對應的版本要求組成,表示依賴的模組及其版本範圍。

{
  "devDependencies": {
    "browserify": "~13.0.0",
    "karma-browserify": "~5.0.1"
  }
}

注:通過 

$ npm install

命令可以根據package.json 所依賴的模組。

bin欄位 

bin項用來指定各個內部命令對應的可執行檔案的位置。

"bin": {
  "someTool": "./bin/someTool.js"
}

上面程式碼指定,someTool 命令對應的可執行檔案為 bin 子目錄下的 someTool.js。Npm會尋找這個檔案,在node_modules/.bin/目錄下建立符號連結。在上面的例子中,someTool.js會建立符號連結npm_modules/.bin/someTool。由於node_modules/.bin/目錄會在執行時加入系統的PATH變數,因此在執行npm時,就可以不帶路徑,直接通過命令來呼叫這些指令碼。

因此,像下面這樣的寫法可以採用簡寫。


scripts: {  
  start: './node_modules/someTool/someTool.js build'
}

// 簡寫為

scripts: {  
  start: 'someTool build'
}

所有node_modules/.bin/目錄下的命令,都可以用npm run [命令]的格式執行。在命令列下,鍵入npm run,然後按tab鍵,就會顯示所有可以使用的命令。

main欄位

main欄位指定了載入的入口檔案,require('moduleName')就會載入這個檔案。這個欄位的預設值是模組根目錄下面的index.js

config 欄位

config欄位用於新增命令列的環境變數。

下面是一個package.json檔案。

{
  "name" : "foo",
  "config" : { "port" : "8080" },
  "scripts" : { "start" : "node server.js" }
}

然後,在server.js指令碼就可以引用config欄位的值。

http
  .createServer(...)
  .listen(process.env.npm_package_config_port)

使用者執行npm run start命令時,這個指令碼就可以得到值。

$ npm run start