此文檔是您需要了解的有關(guān) package.json 文件中所需內(nèi)容的全部信息。它必須是實際的 JSON,而不僅僅是 JavaScript 對象文字。
本文檔中描述的許多行為受 中描述的配置設(shè)置的影響config
。
姓名
如果您計劃發(fā)布您的包,您的 package.json 中最重要的內(nèi)容是名稱和版本字段,因為它們是必需的。名稱和版本共同構(gòu)成一個標(biāo)識符,假定該標(biāo)識符是完全唯一的。對包的更改應(yīng)該伴隨著對版本的更改。如果您不打算發(fā)布包,則名稱和版本字段是可選的。
名字就是你的東西叫什么。
一些規(guī)則:
名稱必須小于或等于 214 個字符。這包括范圍包的范圍。作用域包的名稱可以以點或下劃線開頭。這在沒有范圍的情況下是不允許的。新包的名稱中不得包含大寫字母。該名稱最終成為 URL 的一部分、命令行上的參數(shù)和文件夾名稱。因此,名稱不能包含任何非 URL 安全字符。一些技巧:
不要使用與核心節(jié)點模塊相同的名稱。不要在名稱中加入“js”或“node”。假設(shè)它是 js,因為您正在編寫 package.json 文件,并且您可以使用“engines”字段指定引擎。(見下文。)該名稱可能會作為參數(shù)傳遞給 require(),因此它應(yīng)該是簡短的,但也應(yīng)該具有合理的描述性。您可能需要檢查 npm 注冊表以查看是否已經(jīng)存在使用該名稱的內(nèi)容,以免過于依賴它。?https://www.npmjs.com/名稱可以選擇性地以范圍為前綴,例如`@myorg/mypackage.?請參閱?
scope`了解更多詳情。
版本
如果您計劃發(fā)布您的包,您的 package.json 中最重要的內(nèi)容是名稱和版本字段,因為它們是必需的。名稱和版本共同構(gòu)成一個標(biāo)識符,假定該標(biāo)識符是完全唯一的。對包的更改應(yīng)該伴隨著對版本的更改。如果您不打算發(fā)布包,則名稱和版本字段是可選的。
版本必須可由node-semver解析?,它作為依賴項與 npm 捆綁在一起。(npm install semver
自己使用。)
描述
把描述放在里面。這是一個字符串。這有助于人們發(fā)現(xiàn)您的包裹,如 中所列npm search
。
關(guān)鍵詞
把關(guān)鍵字放進(jìn)去。它是一個字符串?dāng)?shù)組。這有助于人們發(fā)現(xiàn)您的包裹,因為它在 中列出npm search
。
主頁 項目主頁的 url。 例子:
“主頁” :“https://github.com/owner/project#readme”
錯誤 項目問題跟蹤器的 url 和/或應(yīng)報告問題的電子郵件地址。這些對于遇到包裹問題的人很有幫助。 它應(yīng)該是這樣的:
{
"url" : "https://github.com/owner/project/issues" ,
“電子郵件” :“project@hostname.com”
}
您可以指定一個或兩個值。如果您只想提供一個 url,您可以將“bugs”的值指定為一個簡單的字符串而不是一個對象。
如果提供了 url,它將被npm bugs
命令使用。
執(zhí)照 你應(yīng)該為你的包指定一個許可證,以便人們知道他們?nèi)绾伪辉试S使用它,以及你對它施加的任何限制。 如果您使用的是 BSD-2-Clause 或 MIT 等通用許可證,請為您使用的許可證添加當(dāng)前的 SPDX 許可證標(biāo)識符,如下所示:
{
“許可證” :“BSD-3-條款”
}
您可以查看SPDX 許可證 ID 的完整列表。理想情況下,您應(yīng)該選擇?OSI批準(zhǔn)的一種。 如果您的軟件包在多個通用許可下獲得許可,請使用SPDX 許可表達(dá)式語法版本 2.0 string,如下所示:
{
“許可證” :“(ISC 或 GPL-3.0)”
}
如果您使用的許可證尚未分配 SPDX 標(biāo)識符,或者您使用的是自定義許可證,請使用如下字符串值:
{
"license" : "在 <文件名> 中查看許可證"
}
然后包含一個<filename>
在包的頂層命名的文件。
一些舊包使用許可證對象或包含許可證對象數(shù)組的“許可證”屬性:
// 無效的元數(shù)據(jù)
{
“許可證” :{
"類型" : "ISC" ,
"url" : "https://opensource.org/licenses/ISC"
}
}
// 無效的元數(shù)據(jù)
{
“許可證” :[
{
“類型” :“麻省理工學(xué)院” ,
"url" : "https://www.opensource.org/licenses/mit-license.php"
} ,
{
"type" : "Apache-2.0" ,
"url" : "https://opensource.org/licenses/apache2.0.php"
}
]
}
這些樣式現(xiàn)在已棄用。相反,使用 SPDX 表達(dá)式,如下所示:
{ “許可證” :“ISC” }
{ “許可證” :“(MIT 或 Apache-2.0)” }
最后,如果您不希望根據(jù)任何條款授予他人使用私有或未發(fā)布包的權(quán)利:
{ “許可證” :“未經(jīng)許可” }
還要考慮設(shè)置"private": true
以防止意外發(fā)布。
人員字段:作者、貢獻(xiàn)者 “作者”是一個人。“貢獻(xiàn)者”是一群人。“person”是一個帶有“name”字段和可選的“url”和“email”的對象,像這樣:
{
"name" : "Barney Rubble" ,
"email" : "b@rubble.com" ,
“網(wǎng)址” :“http://barnyrubble.tumblr.com/”
}
或者,您可以將其全部縮短為一個字符串,然后 npm 將為您解析它:
{ “作者” :“巴尼瓦礫 <b@rubble.com> (http://barnyrubble.tumblr.com/)” }
email 和 url 都是可選的。 npm 還使用您的 npm 用戶信息設(shè)置頂級“維護(hù)者”字段。
資金 您可以指定一個包含 URL 的對象,該 URL 提供有關(guān)幫助資助包開發(fā)的方法的最新信息,或字符串 URL 或以下內(nèi)容的數(shù)組:
{
“資金” :{
"類型" : "個人" ,
“網(wǎng)址” :“http://example.com/donate”
} ,
“資金” :{
"type" : "patreon" ,
“網(wǎng)址” :“https://www.patreon.com/my-account”
} ,
"funding" : "http://example.com/donate" ,
“資金” :[
{
"類型" : "個人" ,
“網(wǎng)址” :“http://example.com/donate”
} ,
"http://example.com/donateAlso" ,
{
"type" : "patreon" ,
“網(wǎng)址” :“https://www.patreon.com/my-account”
}
]
}
用戶可以使用npm fund
子命令列出funding
其項目的所有依賴項的URL,直接和間接。提供項目名稱時還提供訪問每個資助網(wǎng)址的快捷方式,例如:(?npm fund <projectname>
當(dāng)有多個網(wǎng)址時,將訪問第一個)
檔案
可選files
字段是一個文件模式數(shù)組,它描述了當(dāng)您的包作為依賴項安裝時要包含的條目。文件模式遵循與 類似的語法.gitignore
,但相反:包含文件、目錄或 glob 模式(*
,**/*
等)將使該文件在打包時包含在 tarball 中。省略該字段將使其默認(rèn)為["*"]
,這意味著它將包含所有文件。
一些特殊的文件和目錄也會被包含或排除,無論它們是否存在于files
數(shù)組中(見下文)。
您還可以.npmignore
在包的根目錄或子目錄中提供一個文件,以防止文件被包含在內(nèi)。在包的根目錄中,它不會覆蓋“文件”字段,但在子目錄中會覆蓋。該.npmignore
文件就像一個.gitignore
.?如果有一個.gitignore
文件并且.npmignore
丟失了,.gitignore
則將使用 的內(nèi)容。
文件包含了“的package.json#文件”欄中無法通過排除.npmignore
或.gitignore
。
無論設(shè)置如何,始終包含某些文件:
package.json``README``LICENSE
?/?LICENCE
“主要”字段中的文件README
&LICENSE
可以有任何大小寫和擴(kuò)展名。
相反,一些文件總是被忽略:
.git``CVS``.svn``.hg``.lock-wscript``.wafpickle-N``.*.swp``.DS_Store``._*``npm-debug.log``.npmrc``node_modules``config.gypi``*.orig``package-lock.json
(?npm-shrinkwrap.json
如果您希望發(fā)布,請使用)
主要的
main 字段是一個模塊 ID,它是程序的主要入口點。也就是說,如果您的包名為foo
,并且用戶安裝了它,然后安裝了require("foo")
,那么您的主模塊的導(dǎo)出對象將被返回。
這應(yīng)該是相對于包文件夾根目錄的模塊。
對于大多數(shù)模塊來說,擁有一個主腳本是最有意義的,通常沒有太多其他的東西。
如果main
未設(shè)置,則默認(rèn)index.js
位于包根文件夾中。
瀏覽器
如果您的模塊打算在客戶端使用,則應(yīng)使用瀏覽器字段而不是主字段。這有助于提示用戶它可能依賴于 Node.js 模塊中不可用的原語。(例如?window
)
垃圾桶
很多包都有一個或多個他們想要安裝到 PATH 中的可執(zhí)行文件。npm 使這變得非常簡單(實際上,它使用此功能來安裝“npm”可執(zhí)行文件。)
要使用它,請bin
在 package.json 中提供一個字段,它是命令名到本地文件名的映射。當(dāng)這個包被全局安裝時,該文件將被鏈接到全局 bin 所在的位置,因此它可以按名稱運(yùn)行。當(dāng)此包作為另一個包中的依賴項安裝時,該文件將鏈接到該包可直接通過npm exec
或通過其他腳本中的名稱通過npm run-script
.
例如,myapp 可能有這個:
{ “斌” :{ “我的應(yīng)用程序” :“./cli.js” } }
因此,當(dāng)您安裝 myapp 時,它會創(chuàng)建一個從cli.js
腳本到/usr/local/bin/myapp
.
如果您有一個可執(zhí)行文件,并且它的名稱應(yīng)該是包的名稱,那么您可以將其作為字符串提供。例如:
{ "name" : "我的程序" , “版本” :“1.2.5” , "bin" : "./path/to/program" }
將與此相同:
{ "name" : "我的程序" , “版本” :“1.2.5” , “斌” :{ “我的程序” :“./path/to/program” } }
請確保中引用的文件以bin
開頭?#!/usr/bin/env node
,否則腳本將在沒有節(jié)點可執(zhí)行文件的情況下啟動!
請注意,您還可以使用directory.bin設(shè)置可執(zhí)行文件。
有關(guān)可執(zhí)行文件的更多信息,請參見文件夾。
男人
指定單個文件或文件名數(shù)組以供man
程序查找。
如果只提供了一個文件,那么它會被安裝為來自 的結(jié)果man <pkgname>
,而不管其實際文件名如何。例如:
{ "name" : "foo" , “版本” :“1.2.3” , "description" : "用于 fooing foos 的打包 foo fooer" , "main" : "foo.js" , “人” :“./ man / doc.1” }
將鏈接./man/doc.1
文件,使其成為目標(biāo)man foo
如果文件名不以包名開頭,則它是前綴。所以這:
{ "name" : "foo" , “版本” :“1.2.3” , "description" : "用于 fooing foos 的打包 foo fooer" , "main" : "foo.js" , “男人” :[ "./man/foo.1" , “./man/bar.1” ] }
將創(chuàng)建文件來做man foo
和man foo-bar
。
man 文件必須以數(shù)字結(jié)尾,.gz
如果它們被壓縮,則可以選擇后綴。該數(shù)字指示文件安裝到哪個 man 部分。
{ "name" : "foo" , “版本” :“1.2.3” , "description" : "用于 fooing foos 的打包 foo fooer" , "main" : "foo.js" , “男人” :[ "./man/foo.1" , “./man/foo.2” ] }
將創(chuàng)建條目man foo
和man 2 foo
目錄
CommonJS?Packages規(guī)范詳細(xì)說明了一些可以使用directories
對象指示包結(jié)構(gòu)的方法。如果您查看npm 的 package.json,您會看到它包含 doc、lib 和 man 目錄。
將來,這些信息可能會以其他創(chuàng)造性的方式使用。
目錄.bin
如果在 中指定bin
目錄directories.bin
,則將添加該文件夾中的所有文件。
由于bin
指令的工作方式,同時指定bin
路徑和設(shè)置directories.bin
是錯誤的。如果要指定單個文件,請使用bin
,對于現(xiàn)有bin
?目錄中的所有文件,請使用directories.bin
。
目錄.man 一個充滿手冊頁的文件夾。Sugar 通過遍歷文件夾來生成“man”數(shù)組。
存儲庫
指定代碼所在的位置。這對想要貢獻(xiàn)的人很有幫助。如果 git repo 在 GitHub 上,那么該npm docs
?命令將能夠找到您。
像這樣做:
{ “存儲庫” :{ "類型" : "git" , "url" : "https://github.com/npm/cli.git" } }
URL 應(yīng)該是一個公開可用的(可能是只讀的)url,可以直接傳遞給 VCS 程序,無需任何修改。它不應(yīng)該是您放入瀏覽器的 html 項目頁面的 url。是給電腦用的。
對于 GitHub、GitHub gist、Bitbucket 或 GitLab 存儲庫,您可以使用與 相同的快捷語法npm install
:
{ "repository" : "npm/npm" ,
"repository" : "github:user/repo" ,
“存儲庫” :“要點:11081aaa281” ,
"repository" : "bitbucket:user/repo" ,
“存儲庫” :“gitlab:用戶/倉庫” }
如果package.json
您的包的 不在根目錄中(例如,如果它是 monorepo 的一部分),您可以指定它所在的目錄:
{ “存儲庫” :{ "類型" : "git" , "url" : "https://github.com/facebook/react.git" , “目錄” :“包/react-dom” } }
腳本
“scripts”屬性是一個字典,其中包含在包生命周期中的不同時間運(yùn)行的腳本命令。鍵是生命周期事件,值是在該點運(yùn)行的命令。
請參閱scripts
以了解有關(guān)編寫包腳本的更多信息。
配置 “config”對象可用于設(shè)置在升級過程中持續(xù)存在的包腳本中使用的配置參數(shù)。例如,如果一個包具有以下內(nèi)容:
{ "name" : "foo" , “配置” :{ “端口” :“8080” } }
它也可以有一個引用npm_package_config_port
環(huán)境變量的“啟動”命令?。
依賴
依賴項在一個簡單的對象中指定,該對象將包名稱映射到版本范圍。版本范圍是一個字符串,它具有一個或多個以空格分隔的描述符。依賴項也可以用 tarball 或 git URL 來標(biāo)識。
請不要在您的dependencies
對象中放置測試工具或轉(zhuǎn)譯器或其他“開發(fā)”時間工具。?見devDependencies
,下面。
有關(guān)指定版本范圍的更多詳細(xì)信息,請參閱semver。
version
必須version
完全匹配>version
?必須大于?version``>=version
?等等<version``<=version``~version
“大約相當(dāng)于版本”見?semver^version
“兼容版本”見semver1.2.x
?1.2.0、1.2.1 等,但不是 1.3.0http://...
?請參閱下面的“作為依賴項的 URL”*
?匹配任何版本""
?(只是一個空字符串)與?*``version1 - version2
一樣>=version1 <=version2
。range1 || range2
?如果滿足 range1 或 range2,則通過。git...
?請參閱下面的“作為依賴項的 Git URL”user/repo
?請參閱下面的“GitHub URL”tag
標(biāo)記并發(fā)布為tag
?See 的特定版本npm dist-tag``path/path/path
請參閱下面的本地路徑例如,這些都是有效的:
{ “依賴關(guān)系” :{ "foo" : "1.0.0 - 2.9999.9999" , "bar" : ">=1.0.2 <2.1.2" , "baz" : ">1.0.2 <=2.3.4" , "boo" : "2.0.1" , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0" , "asd" : "http://asdf.com/asdf.tar.gz" , "til" : "~1.2" , "小精靈" : "~1.2.3" , "二" : "2.x" , "thr" : "3.3.x" , "lat" : "最新的" , "dyl" : "文件:../dyl" } }
URL 作為依賴項 您可以指定一個 tarball URL 來代替版本范圍。 這個 tarball 將在安裝時下載并安裝到本地包中。
Git URL 作為依賴項 Git 網(wǎng)址的格式為:
<協(xié)議> :// [ <用戶> [ :<密碼> ] @ ] <主機(jī)名> [ :<端口> ] [ :] [ / ] <路徑> [ #<commit-ish> | #semver:<semver>]
<protocol>
是以下之一git
,git+ssh
,git+http
,git+https
,或?git+file
。
如果#<commit-ish>
提供,它將用于準(zhǔn)確克隆該提交。如果 commit-ish 具有格式#semver:<semver>
,<semver>
可以是任何有效的 semver 范圍或確切版本,并且 npm 將在遠(yuǎn)程存儲庫中查找與該范圍匹配的任何標(biāo)簽或引用,就像查找注冊表依賴項一樣。如果兩者都未指定#<commit-ish>
或未#semver:<semver>
指定,則master
使用。
例子:
git+ssh://git@github.com:npm/cli.git #v1.0.27 git+ssh://git@github.com:npm/cli #semver:^5.0 git+https://isaacs@github.com/npm/cli.git git://github.com/npm/cli.git #v1.0.27
GitHub 網(wǎng)址
從 1.1.65 版本開始,您可以將 GitHub 網(wǎng)址稱為“foo”:“user/foo-project”。就像 git URL 一樣,commit-ish
可以包含后綴。例如:
{ "name" : "foo" , “版本” :“0.0.0” , “依賴關(guān)系” :{ "express" : "expressjs/express" , "mocha" : "mochajs/mocha#4727d357ea" , “模塊” :“用戶/repo#feature\/branch” } }
本地路徑
從版本 2.0.0 開始,您可以提供包含包的本地目錄的路徑。可以使用npm install -S
或保存本地路徑npm install --save
,使用以下任何形式:
.. /foo/bar ~/foo/bar ./foo/bar /foo/bar
在這種情況下,它們將被標(biāo)準(zhǔn)化為相對路徑并添加到您的?package.json
.?例如:
{ "name" : "baz" , “依賴關(guān)系” :{ “bar” :“文件:../foo/bar” } }
此功能有助于本地離線開發(fā)和創(chuàng)建需要在不想訪問外部服務(wù)器的地方安裝 npm 的測試,但不應(yīng)在將包發(fā)布到公共注冊表時使用。
開發(fā)依賴
如果有人計劃在他們的程序中下載和使用您的模塊,那么他們可能不想或不需要下載和構(gòu)建您使用的外部測試或文檔框架。
在這種情況下,最好將這些附加項目映射到一個?devDependencies
對象中。
這些東西將在執(zhí)行時npm link
或npm install
從包的根目錄安裝,并且可以像任何其他 npm 配置參數(shù)一樣進(jìn)行管理。有關(guān)config
該主題的更多信息,請參閱。
對于非特定于平臺的構(gòu)建步驟,例如將 CoffeeScript 或其他語言編譯為 JavaScript,請使用prepare
腳本執(zhí)行此操作,并使所需的包成為 devDependency。
例如:
{ "name" : "ethopia-waza" , “描述” :“令人愉悅的果味咖啡品種” , “版本” :“1.2.3” , “開發(fā)依賴” :{ “咖啡腳本” :“~1.6.3” } , “腳本” :{ “準(zhǔn)備” :“咖啡-o lib/-c src/waza.coffee” } , "main" : "lib/waza.js" }
該prepare
腳本將在發(fā)布之前運(yùn)行,以便用戶無需自行編譯即可使用該功能。在開發(fā)模式下(即本地運(yùn)行npm install
),它也會運(yùn)行這個腳本,以便您可以輕松測試它。
對等依賴
在某些情況下,您希望表達(dá)您的包與主機(jī)工具或庫的兼容性,而不必執(zhí)行require
此主機(jī)的操作。這通常稱為插件。值得注意的是,您的模塊可能會公開主機(jī)文檔所預(yù)期和指定的特定接口。
例如:
{ "name" : "拿鐵茶" , “版本” :“1.3.5” , “peerDependencies” :{ “茶” :“2.x” } }
這確保您的軟件包tea-latte
只能與主機(jī)軟件包的第二個主要版本一起安裝tea
。npm install tea-latte
可能會產(chǎn)生以下依賴圖:
├── 拿鐵茶@1.3.5 └── 茶@2.2.0
在 npm 版本 3 到 6 中,peerDependencies
不會自動安裝,如果在樹中發(fā)現(xiàn)對等依賴項的無效版本,則會發(fā)出警告。由于NPM V7的,peerDependencies被?默認(rèn)安裝。
如果無法正確解析樹,嘗試安裝具有沖突要求的另一個插件可能會導(dǎo)致錯誤。因此,請確保您的插件要求盡可能廣泛,而不是將其鎖定為特定的補(bǔ)丁版本。
假設(shè)主機(jī)符合semver,只有主機(jī)包的主要版本中的更改才會破壞您的插件。因此,如果您使用過主機(jī)包的每個 1.x 版本,請使用"^1.0"
或"1.x"
?來表達(dá)這一點。如果您依賴 1.5.2 中引入的功能,請使用?"^1.5.2"
.
對等依賴元
當(dāng)用戶安裝您的軟件包時,如果 中指定的軟件包peerDependencies
尚未安裝,npm 將發(fā)出警告。該?peerDependenciesMeta
字段用于為 npm 提供有關(guān)如何使用對等依賴項的更多信息。具體來說,它允許對等依賴項標(biāo)記為可選。
例如:
{ "name" : "拿鐵茶" , “版本” :“1.3.5” , “peerDependencies” :{ "茶" : "2.x" , “豆?jié){” :“1.2” } , “peerDependenciesMeta” :{ “豆?jié){” :{ “可選” :真 } } }
將對等依賴項標(biāo)記為可選可確保soy-milk
在主機(jī)上未安裝軟件包時npm 不會發(fā)出警告。這允許您集成各種主機(jī)包并與之交互,而無需安裝所有主機(jī)包。
捆綁依賴
這定義了在發(fā)布包時將捆綁的包名稱數(shù)組。
如果您需要在本地保留 npm 包或通過單個文件下載使它們可用,您可以通過在bundledDependencies
?數(shù)組中指定包名稱并執(zhí)行npm pack
.
例如:
如果我們像這樣定義 package.json:
{ "name" : "awesome-web-framework" , “版本” :“1.0.0” , “捆綁依賴” :[ “渲染” , “超級流” ] }
我們可以awesome-web-framework-1.0.0.tgz
通過運(yùn)行獲取文件npm pack
。此文件包含的依賴關(guān)系renderized
,并super-streams
可以通過執(zhí)行安裝在一個新的項目npm install awesome-web-framework-1.0.0.tgz
。請注意,包名稱不包含任何版本,因為該信息在dependencies
.
如果這是拼寫"bundleDependencies"
,那么這也很榮幸。
可選依賴項
如果可以使用依賴項,但如果找不到或安裝失敗,您希望 npm 繼續(xù),那么您可以將其放入?optionalDependencies
對象中。這是包名稱到版本或 url 的映射,就像dependencies
對象一樣。不同之處在于構(gòu)建失敗不會導(dǎo)致安裝失敗。運(yùn)行npm install --no-optional
將阻止安裝這些依賴項。
處理缺少依賴項仍然是您的程序的責(zé)任。例如,這樣的事情:
試試{
var foo =要求('foo' )
var fooVersion = require ( 'foo/package.json' ) 。版本
}趕上(呃){
foo =空
}
如果( notGoodFooVersion ( fooVersion ) ) {
foo =空
}
// .. 然后在你的程序中..
如果(富){
富。doFooThings ( )
}
中的條目optionalDependencies
將覆蓋 中的同名條目?dependencies
,因此通常最好只放在一個地方。
引擎 您可以指定您的東西適用的節(jié)點版本:
{ “引擎” :{ “節(jié)點” :“>=0.10.3 <15” } }
而且,與依賴項一樣,如果您不指定版本(或者如果您指定“?*?”作為版本),那么任何版本的節(jié)點都可以。 您還可以使用“引擎”字段來指定哪些版本的 npm 能夠正確安裝您的程序。例如:
{ “引擎” :{ “npm” :“~1.0.20” } }
除非用戶設(shè)置了engine-strict
config 標(biāo)志,否則這個字段只是建議性的,只有當(dāng)你的包作為依賴項安裝時才會產(chǎn)生警告。
操作系統(tǒng) 您可以指定您的模塊將在哪些操作系統(tǒng)上運(yùn)行:
{ “操作系統(tǒng)” :[ “達(dá)爾文” , “Linux” ] }
您還可以阻止而不是允許操作系統(tǒng),只需在被阻止的操作系統(tǒng)前面加上一個“!”:
{ “操作系統(tǒng)” :[ “!win32” ] }
主機(jī)操作系統(tǒng)由?process.platform
允許阻止和允許一個項目,盡管沒有任何充分的理由這樣做。
中央處理器 如果您的代碼僅在某些 CPU 架構(gòu)上運(yùn)行,您可以指定哪些架構(gòu)。
{ “CPU” :[ "x64" , “ia32” ] }
與該os
選項一樣,您還可以阻止架構(gòu):
{ “CPU” :[ "!arm" , “!mips” ] }
主機(jī)架構(gòu)由?process.arch
私人的
如果你"private": true
在 package.json 中設(shè)置,那么 npm 將拒絕發(fā)布它。
這是一種防止意外發(fā)布私有存儲庫的方法。如果您想確保給定的包只發(fā)布到特定的注冊表(例如,內(nèi)部注冊表),請使用publishConfig
下面描述的?字典registry
?在發(fā)布時覆蓋配置參數(shù)。
發(fā)布配置
這是一組將在發(fā)布時使用的配置值。如果您想設(shè)置標(biāo)記、注冊表或訪問權(quán)限,這將特別方便,這樣您就可以確保給定的包沒有被標(biāo)記為“最新”、未發(fā)布到全局公共注冊表或默認(rèn)情況下范圍模塊是私有的。
查看config
可覆蓋的配置選項列表。
工作空間
可選workspaces
字段是一個文件模式數(shù)組,它描述了本地文件系統(tǒng)內(nèi)的位置,安裝客戶端應(yīng)該查找這些位置以找到需要符號鏈接到頂級文件夾的每個工作區(qū)node_modules
。
它可以描述要用作工作區(qū)的文件夾的直接路徑,也可以定義將解析為這些相同文件夾的 glob。
在以下示例中,./packages
只要文件夾中包含有效package.json
文件,位于文件夾內(nèi)的所有文件夾?都將被視為工作區(qū)?:
{ "name" : "工作區(qū)示例" , “工作區(qū)” :[ “./包/*” ] }
有關(guān)workspaces
更多示例,請參見。
默認(rèn)值
npm 將根據(jù)包內(nèi)容默認(rèn)一些值。
"scripts": {"start": "node server.js"}
如果server.js
包的根目錄中有一個文件,那么 npm 會將start
命令默認(rèn)為node server.js
.
"scripts":{"install": "node-gyp rebuild"}
如果binding.gyp
你的包根目錄中有一個文件并且你沒有定義install
或preinstall
腳本,npm 將默認(rèn)?install
使用 node-gyp 編譯命令。
"contributors": [...]
如果AUTHORS
包的根目錄中有一個文件,npm 會將每一行視為一種Name <email> (url)
格式,其中 email 和 url 是可選的。以 a#
或開頭的空白行將被忽略。
更多建議: