本文是對(duì) Node.js 項(xiàng)目中 package.json 文件的詳解。
目錄
- package.json 簡介
- 配置說明
- 必需屬性
- 可選屬性
package.json 簡介
package.json 是一個(gè)位于 Node.js 項(xiàng)目根目錄中的 JSON 文件,管理整個(gè)項(xiàng)目的依賴項(xiàng)和元數(shù)據(jù),是項(xiàng)目的核心。
NPM 或 YARN 這類包管理工具可以通過 package.json 來識(shí)別項(xiàng)目并了解如何處理項(xiàng)目的依賴關(guān)系。
配置說明
必需屬性
name
項(xiàng)目名稱,全部小寫字母,不能超過214個(gè)字符且必須是 URL 安全的(允許使用下劃線和中橫線,但不允許使用空格或其它字符)。-
version
版本號(hào),格式x.y.z,符合 NPM 語義版本控制要求。-
x:主版本號(hào),新增功能,不兼容之前版本 -
y:次版本號(hào),新增功能,但兼容之前版本 -
z:PATCH 補(bǔ)丁版本號(hào),修復(fù) BUG,且兼容之前版本
-
可選屬性
license
軟件許可證,值通常是許可證的標(biāo)識(shí)符代碼,如BSD、MIT。-
author
一個(gè)人,軟件作者,格式:-
Name格式字符串
"author": "Jon Church jon@example.com https://www.osioslabs.com/#team"- 包含
name、email和url的 JSON,如:
"author": { "name": "...", "email": "example@example.com", "url": "https://..." } -
contributors
一組人,數(shù)組類型,數(shù)組中每項(xiàng)和author格式一致。private
如果這個(gè)屬性被設(shè)置為true,NPM 將拒絕發(fā)布它,這是為了防止一個(gè)私有模塊被無意間發(fā)布出去。如果只想讓模塊被發(fā)布到一個(gè)特定的 NPM 倉庫,如一個(gè)內(nèi)部的倉庫,可與在下面的publishConfig中配置倉庫參數(shù)。publishConfig
這個(gè)配置是會(huì)在模塊發(fā)布時(shí)用到的一些值的集合。如果不想模塊被默認(rèn)被標(biāo)記為最新的,或者默認(rèn)發(fā)布到公共倉庫,可以在這里配置tag或倉庫地址。description
字符串,用于npm search搜索。keywords
字符串?dāng)?shù)組,用于npm search搜索。main
指定加載的入口文件,使用require('moduleName')時(shí)便會(huì)加載此文件,默認(rèn)值為模塊根目錄下的index.js。
browser環(huán)境和node環(huán)境均可使用。browser
定義了 NPM 包在browser環(huán)境下的入口文件。-
scripts
指定運(yùn)行腳本命令的 NPM 命令行縮寫,比如serve指定了運(yùn)行npm run serve時(shí)真正執(zhí)行的命令。以下設(shè)置指定了運(yùn)行
npm run serve、npm run lint、npm run mock時(shí)要執(zhí)行的命令。"scripts": { "serve": "concurrently \"npm:mock\" \"vue-cli-service serve\"", "lint": "vue-cli-service lint", "mock": "cd mock && ts-node-dev mock-server.ts" } config
用于添加命令行環(huán)境變量,JSON 對(duì)象,值在Scripts的整個(gè)周期中皆可用,專門用于給Scripts提供配置參數(shù)。-
bin
指定各內(nèi)部命令對(duì)應(yīng)的可執(zhí)行文件的位置。如以下配置指定someTool命令對(duì)應(yīng)的可執(zhí)行文件為bin子目錄下的someTool.js。"bin": { "someTool": "./bin/someTool.js" }NPM 會(huì)查找這個(gè)文件,在
node_modules/.bin/目錄下建立符號(hào)鏈接node_modules/.bin/someTool,由于node_modules/.bin/目錄在運(yùn)行時(shí)加入系統(tǒng)的PATH變量,因此運(yùn)行 NPM 時(shí)可以不帶路徑,直接通過命令運(yùn)行這些腳本。所有
node_modules/.bin/目錄下的命令都可以使用npm run [命令]執(zhí)行,在命令行下鍵入npm run后按Tab鍵就會(huì)顯示所有可使用的命令。 engines
指定運(yùn)行的平臺(tái),如 Node.js 的某個(gè)版本、NPM 版本或?yàn)g覽器。-
repository
代碼存放位置,如:"repository": { "type": "git", "url": "https://github.com/..." } -
dependencies
指定項(xiàng)目運(yùn)行需要依賴的模塊,JSON 對(duì)象類型,每個(gè)對(duì)象成員分別由模塊名和對(duì)應(yīng)版本要求組成,表示依賴的模塊和其版本范圍。"dependencies": { "echarts": "4.2.1", "axios": "^0.19.0", "js-cookie": "~2.2.0", "sortablejs": "latest" }版本號(hào)限定分以下幾種:
- 指定版本號(hào):如上例中的
echarts,只安裝指定版本。 -
^+ 指定版本號(hào):如上例中的axios,表示安裝同一主版本號(hào)下的最新版本,即只能安裝0.x.x版本,不能安裝1.x.x版本。 -
~+ 指定版本號(hào):如上例中的js-cookie,表示安裝同一主版本號(hào)和次版本號(hào)下的最新版本,即只能安裝2.2.x版本,不能安裝2.3.x版本。 -
latest:安裝最新版本。
- 指定版本號(hào):如上例中的
devDependencies
指定項(xiàng)目開發(fā)需要依賴的模塊,同dependencies一樣也是一個(gè)JSON 對(duì)象類型,每個(gè)對(duì)象成員分別由模塊名和對(duì)應(yīng)版本要求組成,表示依賴的模塊和其版本范圍。版本號(hào)限定規(guī)則和dependencies一致。-
bugs
問題跟蹤系統(tǒng)地址或郵箱,npm bugs時(shí)使用,如:"bugs": "https://github.com/..." gitHooks
@vue/cli-service安裝后會(huì)安裝 yorkie,允許在package.json的gitHooks字段中方便地指定 Git Hook。lint-staged