Node.js package.json文件

2018-01-19 10:16 更新

npm模塊依賴項(xiàng)存儲(chǔ)在名為package.json的配置文件中,該文件位于項(xiàng)目的根目錄中。package.json中的JSON數(shù)據(jù)必須遵循某個(gè)模式。它必須有包的名稱和版本。包名稱由name字段指定。該名稱應(yīng)該在npm注冊(cè)表中是包的唯一標(biāo)識(shí)。

通過使用npm,該名稱將成為URL的一部分、命令行參數(shù)和目錄名稱。因此,名稱不能以點(diǎn)或下劃線開頭,不能包含空格或任何其他非網(wǎng)址安全字符。

公共包必須在npm注冊(cè)表中具有唯一的名稱。

下面的代碼有一個(gè)最小的package.json文件

{"name": "package-name", "version": "0.0.0"}

包的版本在版本字段中指定。版本,當(dāng)與名稱結(jié)合時(shí),為包提供真正唯一的標(biāo)識(shí)符。版本號(hào)指定主版本,次版本和修補(bǔ)程序號(hào),用點(diǎn)分隔。npm允許版本以 v 字符開頭。

你可以通過將標(biāo)記附加到補(bǔ)丁編號(hào)來指定內(nèi)部版本號(hào)。有兩種類型的標(biāo)簽,prerelease和postrelease。Postrelease標(biāo)簽增加版本號(hào),而prerelease標(biāo)簽減少它。postrelease標(biāo)記是數(shù)字跟隨的連字符,其他標(biāo)簽都是prerelease標(biāo)簽。

以下示例顯示版本標(biāo)簽。

0.9.6-7
0.9.6-7-beta
0.9.6-6
0.9.6
0.9.6beta

description和keywords

description字段提供包的文本描述。

keywords字段提供了一組關(guān)鍵字來描述包。

下面的代碼顯示了一個(gè)包含description和keywords字段的package.json。

"description": "This is a description of  the   module", 
"keywords": ["foo", "search", "baz"]

author和contributors

主作者在author字段中指定,其中只能包含一個(gè)條目。contributors可以包含一組人。

有兩種方法可以指定一個(gè)人。

"author":  {"name":  "Your Name",  
            "email":  "name@o2fo.com", 
            "url":  "http://o2fo.com"},
"contributors": [{"name":  "Name 1", 
                  "email": "n@o2fo.com", 
                  "url": "http://o2fo.com"},
                {"name":  "Name 2", 
                 "email": "m@o2fo.com", 
                 "url": "http://o2fo.com"
                }
                ]

或者

"author": "Your Name <name@o2fo.com> (http://o2fo.com)", 
"contributors": ["Name 1 <n@o2fo.com> (http://o2fo.com)", 
                 "Name 2 <m@o2fo.com> (http://o2fo.com)"]

主入口點(diǎn)

包的主入口點(diǎn)文件存儲(chǔ)在package.json文件中。main 字段告訴Node當(dāng)使用 require()時(shí)要加載哪個(gè)文件。

將主入口點(diǎn)設(shè)置到位于 src 子目錄中的名為 bar.js 的文件。

"main": "./src/bar.js"

preferGlobal設(shè)置

要提醒用戶全局安裝軟件包,請(qǐng)使用 preferGlobal 設(shè)置

dependencies

包的依賴關(guān)系在package.json文件的dependencies字段中指定。

版本字符串可以是npm理解的任何版本表達(dá)式,包括git和tarball URL。

以下代碼僅根據(jù)命令器設(shè)置包的dependencies字段。

"dependencies": { "commander": "1.2.x"}

devDependencies

要包括僅用于測(cè)試和開發(fā)的包的依賴關(guān)系,使用devDependencies字段。

"devDependencies": { "mocha": "~1.8.1"}

開發(fā)依賴可以自動(dòng)添加到package.json文件中。

為此,請(qǐng)將--save-dev標(biāo)志附加到npm install命令。

npm install mocha --save-dev

可選依賴關(guān)系

使用可選的依賴項(xiàng),npm將繼續(xù),盡管它們不存在??蛇x依賴項(xiàng)列在optionalDependencies字段中。

通過為npm install指定 --save-optional 標(biāo)志,可以在安裝期間將可選依賴性添加到package.json文件。

要加載可選的包,可使用 try...catch if 語句。

下面的代碼假設(shè) commander 是一個(gè)可選的依賴。

如果commander不存在,require()函數(shù)會(huì)拋出一個(gè)異常,然后將其封裝在try...catch 語句中。

在使用之前檢查commander是否具有定義的值。

var commander;

try  {
   commander = require("commander");
} catch (exception)  {
   commander = null;
}

if (commander)  {
   // do  something with  commander
}

engines

engines字段指定模塊的node版本和npm。

"engines": {"node": ">=0.10.12", "npm": "1.2.x"}

scripts

scripts字段(如果存在)包含npm命令到腳本命令的映射。腳本命令在外部shell進(jìn)程中運(yùn)行。它們可以是任何可執(zhí)行的命令。兩個(gè)最常用的命令是start和test。

start命令啟動(dòng)你的應(yīng)用程序,并測(cè)試運(yùn)行一個(gè)或多個(gè)應(yīng)用程序的test腳本。

"scripts": {
    "start": "node  server.js",
    "test": "echo  \"message\" &&   exit  1"
}

要執(zhí)行start和test命令,只需將命令名傳遞給npm。

$ npm test

其他字段

你可以在homepage字段中列出項(xiàng)目的主頁,在license字段中列出軟件許可證類型,以及在repository字段中列出項(xiàng)目源代碼的存儲(chǔ)庫。

獲取有關(guān)package.json文件的更多信息,可發(fā)出命令 npm help json 。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)