npm package.json

2021-10-29 10:52 更新

描述

此文檔是您需要了解的有關(guān) package.json 文件中所需內(nèi)容的全部信息。它必須是實(shí)際的 JSON,而不僅僅是 JavaScript 對象文字。 本文檔中描述的許多行為受 中描述的配置設(shè)置的影響config。

姓名 如果您計(jì)劃發(fā)布您的包,您的 package.json 中最重要的內(nèi)容是名稱和版本字段,因?yàn)樗鼈兪潜匦璧?。名稱和版本共同構(gòu)成一個(gè)標(biāo)識符,假定該標(biāo)識符是完全唯一的。對包的更改應(yīng)該伴隨著對版本的更改。如果您不打算發(fā)布包,則名稱和版本字段是可選的。 名字就是你的東西叫什么。 一些規(guī)則: 名稱必須小于或等于 214 個(gè)字符。這包括范圍包的范圍。作用域包的名稱可以以點(diǎn)或下劃線開頭。這在沒有范圍的情況下是不允許的。新包的名稱中不得包含大寫字母。該名稱最終成為 URL 的一部分、命令行上的參數(shù)和文件夾名稱。因此,名稱不能包含任何非 URL 安全字符。一些技巧: 不要使用與核心節(jié)點(diǎn)模塊相同的名稱。不要在名稱中加入“js”或“node”。假設(shè)它是 js,因?yàn)槟诰帉?package.json 文件,并且您可以使用“engines”字段指定引擎。(見下文。)該名稱可能會作為參數(shù)傳遞給 require(),因此它應(yīng)該是簡短的,但也應(yīng)該具有合理的描述性。您可能需要檢查 npm 注冊表以查看是否已經(jīng)存在使用該名稱的內(nèi)容,以免過于依賴它。?https://www.npmjs.com/名稱可以選擇性地以范圍為前綴,例如`@myorg/mypackage.?請參閱?scope`了解更多詳情。

版本 如果您計(jì)劃發(fā)布您的包,您的 package.json 中最重要的內(nèi)容是名稱和版本字段,因?yàn)樗鼈兪潜匦璧摹CQ和版本共同構(gòu)成一個(gè)標(biāo)識符,假定該標(biāo)識符是完全唯一的。對包的更改應(yīng)該伴隨著對版本的更改。如果您不打算發(fā)布包,則名稱和版本字段是可選的。 版本必須可由node-semver解析?,它作為依賴項(xiàng)與 npm 捆綁在一起。(npm install semver自己使用。)

描述 把描述放在里面。這是一個(gè)字符串。這有助于人們發(fā)現(xiàn)您的包裹,如 中所列npm search。

關(guān)鍵詞 把關(guān)鍵字放進(jìn)去。它是一個(gè)字符串?dāng)?shù)組。這有助于人們發(fā)現(xiàn)您的包裹,因?yàn)樗?中列出npm search。

主頁 項(xiàng)目主頁的 url。 例子:

“主頁” :“https://github.com/owner/project#readme

錯(cuò)誤 項(xiàng)目問題跟蹤器的 url 和/或應(yīng)報(bào)告問題的電子郵件地址。這些對于遇到包裹問題的人很有幫助。 它應(yīng)該是這樣的:

{ "url" : "https://github.com/owner/project/issues" ,
“電子郵件” :“project@hostname.com”
}

您可以指定一個(gè)或兩個(gè)值。如果您只想提供一個(gè) url,您可以將“bugs”的值指定為一個(gè)簡單的字符串而不是一個(gè)對象。 如果提供了 url,它將被npm bugs命令使用。

執(zhí)照 你應(yīng)該為你的包指定一個(gè)許可證,以便人們知道他們?nèi)绾伪辉试S使用它,以及你對它施加的任何限制。 如果您使用的是 BSD-2-Clause 或 MIT 等通用許可證,請為您使用的許可證添加當(dāng)前的 SPDX 許可證標(biāo)識符,如下所示:

{ “許可證” :“BSD-3-條款”
}

您可以查看SPDX 許可證 ID 的完整列表。理想情況下,您應(yīng)該選擇?OSI批準(zhǔn)的一種。 如果您的軟件包在多個(gè)通用許可下獲得許可,請使用SPDX 許可表達(dá)式語法版本 2.0 string,如下所示:

{ “許可證” :“(ISC 或 GPL-3.0)”
}

如果您使用的許可證尚未分配 SPDX 標(biāo)識符,或者您使用的是自定義許可證,請使用如下字符串值:

{ "license" : "在 <文件名> 中查看許可證"
}

然后包含一個(gè)<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)者 “作者”是一個(gè)人?!柏暙I(xiàn)者”是一群人?!皃erson”是一個(gè)帶有“name”字段和可選的“url”和“email”的對象,像這樣:

{ "name" : "Barney Rubble" ,
"email" : "b@rubble.com" ,
“網(wǎng)址” :“http://barnyrubble.tumblr.com/
}

或者,您可以將其全部縮短為一個(gè)字符串,然后 npm 將為您解析它:

{ “作者” :“巴尼瓦礫 <b@rubble.com> (http://barnyrubble.tumblr.com/)” }

email 和 url 都是可選的。 npm 還使用您的 npm 用戶信息設(shè)置頂級“維護(hù)者”字段。

資金 您可以指定一個(gè)包含 URL 的對象,該 URL 提供有關(guān)幫助資助包開發(fā)的方法的最新信息,或字符串 URL 或以下內(nèi)容的數(shù)組:

{ “資金” :{ "類型" : "個(gè)人" ,
“網(wǎng)址” :“http://example.com/donate
} ,

“資金” :{ "type" : "patreon" ,
“網(wǎng)址” :“https://www.patreon.com/my-account
} ,

"funding" : "http://example.com/donate" ,

“資金” :[ { "類型" : "個(gè)人" ,
“網(wǎng)址” :“http://example.com/donate
} , "http://example.com/donateAlso" , { "type" : "patreon" ,
“網(wǎng)址” :“https://www.patreon.com/my-account
} ] }

用戶可以使用npm fund子命令列出funding其項(xiàng)目的所有依賴項(xiàng)的URL,直接和間接。提供項(xiàng)目名稱時(shí)還提供訪問每個(gè)資助網(wǎng)址的快捷方式,例如:(?npm fund <projectname>當(dāng)有多個(gè)網(wǎng)址時(shí),將訪問第一個(gè))

檔案 可選files字段是一個(gè)文件模式數(shù)組,它描述了當(dāng)您的包作為依賴項(xiàng)安裝時(shí)要包含的條目。文件模式遵循與 類似的語法.gitignore,但相反:包含文件、目錄或 glob 模式(*,**/*等)將使該文件在打包時(shí)包含在 tarball 中。省略該字段將使其默認(rèn)為["*"],這意味著它將包含所有文件。 一些特殊的文件和目錄也會被包含或排除,無論它們是否存在于files數(shù)組中(見下文)。 您還可以.npmignore在包的根目錄或子目錄中提供一個(gè)文件,以防止文件被包含在內(nèi)。在包的根目錄中,它不會覆蓋“文件”字段,但在子目錄中會覆蓋。該.npmignore文件就像一個(gè).gitignore.?如果有一個(gè).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 字段是一個(gè)模塊 ID,它是程序的主要入口點(diǎn)。也就是說,如果您的包名為foo,并且用戶安裝了它,然后安裝了require("foo"),那么您的主模塊的導(dǎo)出對象將被返回。 這應(yīng)該是相對于包文件夾根目錄的模塊。 對于大多數(shù)模塊來說,擁有一個(gè)主腳本是最有意義的,通常沒有太多其他的東西。 如果main未設(shè)置,則默認(rèn)index.js位于包根文件夾中。

瀏覽器 如果您的模塊打算在客戶端使用,則應(yīng)使用瀏覽器字段而不是主字段。這有助于提示用戶它可能依賴于 Node.js 模塊中不可用的原語。(例如?window

垃圾桶 很多包都有一個(gè)或多個(gè)他們想要安裝到 PATH 中的可執(zhí)行文件。npm 使這變得非常簡單(實(shí)際上,它使用此功能來安裝“npm”可執(zhí)行文件。) 要使用它,請bin在 package.json 中提供一個(gè)字段,它是命令名到本地文件名的映射。當(dāng)這個(gè)包被全局安裝時(shí),該文件將被鏈接到全局 bin 所在的位置,因此它可以按名稱運(yùn)行。當(dāng)此包作為另一個(gè)包中的依賴項(xiàng)安裝時(shí),該文件將鏈接到該包可直接通過npm exec或通過其他腳本中的名稱通過npm run-script. 例如,myapp 可能有這個(gè):

{ “斌” :{ “我的應(yīng)用程序” :“./cli.js” } }

因此,當(dāng)您安裝 myapp 時(shí),它會創(chuàng)建一個(gè)從cli.js腳本到/usr/local/bin/myapp. 如果您有一個(gè)可執(zhí)行文件,并且它的名稱應(yīng)該是包的名稱,那么您可以將其作為字符串提供。例如:

{ "name" : "我的程序" , “版本” :“1.2.5” , "bin" : "./path/to/program" }

將與此相同:

{ "name" : "我的程序" , “版本” :“1.2.5” , “斌” :{ “我的程序” :“./path/to/program” } }

請確保中引用的文件以bin開頭?#!/usr/bin/env node,否則腳本將在沒有節(jié)點(diǎn)可執(zhí)行文件的情況下啟動! 請注意,您還可以使用directory.bin設(shè)置可執(zhí)行文件。 有關(guān)可執(zhí)行文件的更多信息,請參見文件夾。

男人 指定單個(gè)文件或文件名數(shù)組以供man程序查找。 如果只提供了一個(gè)文件,那么它會被安裝為來自 的結(jié)果man <pkgname>,而不管其實(shí)際文件名如何。例如:

{ "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 fooman foo-bar。 man 文件必須以數(shù)字結(jié)尾,.gz如果它們被壓縮,則可以選擇后綴。該數(shù)字指示文件安裝到哪個(gè) man 部分。

{ "name" : "foo" , “版本” :“1.2.3” , "description" : "用于 fooing foos 的打包 foo fooer" , "main" : "foo.js" , “男人” :[ "./man/foo.1" , “./man/foo.2” ] }

將創(chuàng)建條目man fooman 2 foo

目錄 CommonJS?Packages規(guī)范詳細(xì)說明了一些可以使用directories對象指示包結(jié)構(gòu)的方法。如果您查看npm 的 package.json,您會看到它包含 doc、lib 和 man 目錄。 將來,這些信息可能會以其他創(chuàng)造性的方式使用。

目錄.bin 如果在 中指定bin目錄directories.bin,則將添加該文件夾中的所有文件。 由于bin指令的工作方式,同時(shí)指定bin路徑和設(shè)置directories.bin是錯(cuò)誤的。如果要指定單個(gè)文件,請使用bin,對于現(xiàn)有bin?目錄中的所有文件,請使用directories.bin。

目錄.man 一個(gè)充滿手冊頁的文件夾。Sugar 通過遍歷文件夾來生成“man”數(shù)組。

存儲庫 指定代碼所在的位置。這對想要貢獻(xiàn)的人很有幫助。如果 git repo 在 GitHub 上,那么該npm docs?命令將能夠找到您。 像這樣做:

{ “存儲庫” :{ "類型" : "git" , "url" : "https://github.com/npm/cli.git" } }

URL 應(yīng)該是一個(gè)公開可用的(可能是只讀的)url,可以直接傳遞給 VCS 程序,無需任何修改。它不應(yīng)該是您放入瀏覽器的 html 項(xiàng)目頁面的 url。是給電腦用的。 對于 GitHub、GitHub gist、Bitbucket 或 GitLab 存儲庫,您可以使用與 相同的快捷語法npm install

{ "repository" : "npm/npm" ,

"repository" : "github:user/repo" ,

“存儲庫” :“要點(diǎn):11081aaa281” ,

"repository" : "bitbucket:user/repo" ,

“存儲庫” :“gitlab:用戶/倉庫” }

如果package.json您的包的 不在根目錄中(例如,如果它是 monorepo 的一部分),您可以指定它所在的目錄:

{ “存儲庫” :{ "類型" : "git" , "url" : "https://github.com/facebook/react.git" , “目錄” :“包/react-dom” } }

腳本 “scripts”屬性是一個(gè)字典,其中包含在包生命周期中的不同時(shí)間運(yùn)行的腳本命令。鍵是生命周期事件,值是在該點(diǎn)運(yùn)行的命令。 請參閱scripts以了解有關(guān)編寫包腳本的更多信息。

配置 “config”對象可用于設(shè)置在升級過程中持續(xù)存在的包腳本中使用的配置參數(shù)。例如,如果一個(gè)包具有以下內(nèi)容:

{ "name" : "foo" , “配置” :{ “端口” :“8080” } }

它也可以有一個(gè)引用npm_package_config_port環(huán)境變量的“啟動”命令?。

依賴 依賴項(xiàng)在一個(gè)簡單的對象中指定,該對象將包名稱映射到版本范圍。版本范圍是一個(gè)字符串,它具有一個(gè)或多個(gè)以空格分隔的描述符。依賴項(xiàng)也可以用 tarball 或 git URL 來標(biāo)識。 請不要在您的dependencies對象中放置測試工具或轉(zhuǎn)譯器或其他“開發(fā)”時(shí)間工具。?見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://...?請參閱下面的“作為依賴項(xiàng)的 URL”*?匹配任何版本""?(只是一個(gè)空字符串)與?*``version1 - version2一樣>=version1 <=version2range1 || range2?如果滿足 range1 或 range2,則通過。git...?請參閱下面的“作為依賴項(xiàng)的 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 作為依賴項(xiàng) 您可以指定一個(gè) tarball URL 來代替版本范圍。 這個(gè) tarball 將在安裝時(shí)下載并安裝到本地包中。

Git URL 作為依賴項(xiàng) 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)簽或引用,就像查找注冊表依賴項(xiàng)一樣。如果兩者都未指定#<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 開始,您可以提供包含包的本地目錄的路徑??梢允褂?code>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ā)布到公共注冊表時(shí)使用。

開發(fā)依賴 如果有人計(jì)劃在他們的程序中下載和使用您的模塊,那么他們可能不想或不需要下載和構(gòu)建您使用的外部測試或文檔框架。 在這種情況下,最好將這些附加項(xiàng)目映射到一個(gè)?devDependencies對象中。 這些東西將在執(zhí)行時(shí)npm linknpm 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)行這個(gè)腳本,以便您可以輕松測試它。

對等依賴 在某些情況下,您希望表達(dá)您的包與主機(jī)工具或庫的兼容性,而不必執(zhí)行require此主機(jī)的操作。這通常稱為插件。值得注意的是,您的模塊可能會公開主機(jī)文檔所預(yù)期和指定的特定接口。 例如:

{ "name" : "拿鐵茶" , “版本” :“1.3.5” , “peerDependencies” :{ “茶” :“2.x” } }

這確保您的軟件包tea-latte只能與主機(jī)軟件包的第二個(gè)主要版本一起安裝tea。npm install tea-latte可能會產(chǎn)生以下依賴圖:

├── 拿鐵茶@1.3.5 └── 茶@2.2.0

在 npm 版本 3 到 6 中,peerDependencies不會自動安裝,如果在樹中發(fā)現(xiàn)對等依賴項(xiàng)的無效版本,則會發(fā)出警告。由于NPM V7的,peerDependencies被?默認(rèn)安裝。 如果無法正確解析樹,嘗試安裝具有沖突要求的另一個(gè)插件可能會導(dǎo)致錯(cuò)誤。因此,請確保您的插件要求盡可能廣泛,而不是將其鎖定為特定的補(bǔ)丁版本。 假設(shè)主機(jī)符合semver,只有主機(jī)包的主要版本中的更改才會破壞您的插件。因此,如果您使用過主機(jī)包的每個(gè) 1.x 版本,請使用"^1.0""1.x"?來表達(dá)這一點(diǎn)。如果您依賴 1.5.2 中引入的功能,請使用?"^1.5.2".

對等依賴元 當(dāng)用戶安裝您的軟件包時(shí),如果 中指定的軟件包peerDependencies尚未安裝,npm 將發(fā)出警告。該?peerDependenciesMeta字段用于為 npm 提供有關(guān)如何使用對等依賴項(xiàng)的更多信息。具體來說,它允許對等依賴項(xiàng)標(biāo)記為可選。 例如:

{ "name" : "拿鐵茶" , “版本” :“1.3.5” , “peerDependencies” :{ "茶" : "2.x" , “豆?jié){” :“1.2” } , “peerDependenciesMeta” :{ “豆?jié){” :{ “可選” :真 } } }

將對等依賴項(xiàng)標(biāo)記為可選可確保soy-milk在主機(jī)上未安裝軟件包時(shí)npm 不會發(fā)出警告。這允許您集成各種主機(jī)包并與之交互,而無需安裝所有主機(jī)包。

捆綁依賴 這定義了在發(fā)布包時(shí)將捆綁的包名稱數(shù)組。 如果您需要在本地保留 npm 包或通過單個(gè)文件下載使它們可用,您可以通過在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í)行安裝在一個(gè)新的項(xiàng)目npm install awesome-web-framework-1.0.0.tgz。請注意,包名稱不包含任何版本,因?yàn)樵撔畔⒃?code>dependencies. 如果這是拼寫"bundleDependencies",那么這也很榮幸。

可選依賴項(xiàng) 如果可以使用依賴項(xiàng),但如果找不到或安裝失敗,您希望 npm 繼續(xù),那么您可以將其放入?optionalDependencies對象中。這是包名稱到版本或 url 的映射,就像dependencies對象一樣。不同之處在于構(gòu)建失敗不會導(dǎo)致安裝失敗。運(yùn)行npm install --no-optional將阻止安裝這些依賴項(xiàng)。 處理缺少依賴項(xiàng)仍然是您的程序的責(zé)任。例如,這樣的事情:

試試{ var foo =要求('foo' ) var fooVersion = require ( 'foo/package.json' ) 。版本 }趕上(呃){
foo =空 } 如果( notGoodFooVersion ( fooVersion ) ) {
foo =空 }

// .. 然后在你的程序中..

如果(富){
富。doFooThings ( ) }

中的條目optionalDependencies將覆蓋 中的同名條目?dependencies,因此通常最好只放在一個(gè)地方。

引擎 您可以指定您的東西適用的節(jié)點(diǎn)版本:

{ “引擎” :{ “節(jié)點(diǎn)” :“>=0.10.3 <15” } }

而且,與依賴項(xiàng)一樣,如果您不指定版本(或者如果您指定“?*?”作為版本),那么任何版本的節(jié)點(diǎn)都可以。 您還可以使用“引擎”字段來指定哪些版本的 npm 能夠正確安裝您的程序。例如:

{ “引擎” :{ “npm” :“~1.0.20” } }

除非用戶設(shè)置了engine-strictconfig 標(biāo)志,否則這個(gè)字段只是建議性的,只有當(dāng)你的包作為依賴項(xiàng)安裝時(shí)才會產(chǎn)生警告。

操作系統(tǒng) 您可以指定您的模塊將在哪些操作系統(tǒng)上運(yùn)行:

{ “操作系統(tǒng)” :[ “達(dá)爾文” , “Linux” ] }

您還可以阻止而不是允許操作系統(tǒng),只需在被阻止的操作系統(tǒng)前面加上一個(gè)“!”:

{ “操作系統(tǒng)” :[ “!win32” ] }

主機(jī)操作系統(tǒng)由?process.platform 允許阻止和允許一個(gè)項(xiàng)目,盡管沒有任何充分的理由這樣做。

中央處理器 如果您的代碼僅在某些 CPU 架構(gòu)上運(yùn)行,您可以指定哪些架構(gòu)。

{ “CPU” :[ "x64" , “ia32” ] }

與該os選項(xiàng)一樣,您還可以阻止架構(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í)覆蓋配置參數(shù)。

發(fā)布配置 這是一組將在發(fā)布時(shí)使用的配置值。如果您想設(shè)置標(biāo)記、注冊表或訪問權(quán)限,這將特別方便,這樣您就可以確保給定的包沒有被標(biāo)記為“最新”、未發(fā)布到全局公共注冊表或默認(rèn)情況下范圍模塊是私有的。 查看config可覆蓋的配置選項(xiàng)列表。

工作空間 可選workspaces字段是一個(gè)文件模式數(shù)組,它描述了本地文件系統(tǒng)內(nèi)的位置,安裝客戶端應(yīng)該查找這些位置以找到需要符號鏈接到頂級文件夾的每個(gè)工作區(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包的根目錄中有一個(gè)文件,那么 npm 會將start命令默認(rèn)為node server.js. "scripts":{"install": "node-gyp rebuild"} 如果binding.gyp你的包根目錄中有一個(gè)文件并且你沒有定義installpreinstall腳本,npm 將默認(rèn)?install使用 node-gyp 編譯命令。 "contributors": [...] 如果AUTHORS包的根目錄中有一個(gè)文件,npm 會將每一行視為一種Name <email> (url)格式,其中 email 和 url 是可選的。以 a#或開頭的空白行將被忽略。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號