這個(gè)快速參考備忘清單,顯示了關(guān)于 package.json 文件中所需內(nèi)容的全部?jī)?nèi)容。
本快速參考備忘清單是您需要了解的關(guān)于 package.json 文件中所需內(nèi)容的全部?jī)?nèi)容。 它必須是實(shí)際的 JSON,而不僅僅是 JavaScript 對(duì)象字面量。
name{
"name": "my-awesome-package"
}
@scope/ 范圍包).)或下劃線(_)開(kāi)頭version{
"version": "1.0.0"
}
包的當(dāng)前版本,嚴(yán)格遵循 Semantic Versioning 2.0.0 語(yǔ)義化版本規(guī)范。
Node.js 核心模塊相同的名字。js 或者 node 單詞。require() 調(diào)用里。如果沒(méi)有 name 和version 字段,您的包將無(wú)法安裝
name 包yarn add [包名]
# or
npm install [包名]
安裝后存放位置
node_modules/[包名]
npmjs 下載地址
https://registry.npmjs.org/[包名]/-/[包名]-[version].tgz
這是您的 包 的名稱。 它在URL中使用,作為參數(shù)命令行,以及 node_modules 中的目錄名。
description{
"description": "我的包的概要簡(jiǎn)短描述"
}
幫助使用者了解包的功能的字符串,包管理器也會(huì)把這個(gè)字符串作為搜索關(guān)鍵詞。
license所有包都應(yīng)該指定許可證,以便讓用戶了解他們是在什么授權(quán)下使用此包,以及此包還有哪些附加限制。
{
"license": "MIT",
"license": "(MIT or GPL-3.0)",
"license": "SEE LICENSE IN LICENSE_FILENAME.txt",
"license": "UNLICENSED"
}
鼓勵(lì)使用開(kāi)源 (OSI-approved) 許可證,除非你有特別的原因不用它。 如果你開(kāi)發(fā)的包是你工作的一部分,最好和公司討論后再做決定。
SEE LICENSE IN <文件名> 字符串指向你的包里頂級(jí)目錄的一個(gè) <文件名>。UNLICENSED 字符串。keywords{
"keywords": [
"short", "relevant", "keywords"
]
}
一個(gè)字符串?dāng)?shù)組,當(dāng)在包管理器里搜索包時(shí)很有用。
各種指向項(xiàng)目文檔、issues 上報(bào),以及代碼托管網(wǎng)站的鏈接字段。
homepage{
"homepage": "https://your-package.org"
}
是包的項(xiàng)目主頁(yè)或者文檔首頁(yè)。
repository{
"repository": {
"type": "git", "url": "https://github.com/user/repo.git"
},
"repository": "github:user/repo",
"repository": "gitlab:user/repo",
"repository": "bitbucket:user/repo",
"repository": "gist:a1b2c3d4e5f"
}
包的實(shí)際代碼所在的位置。
bugs{
"bugs": "https://github.com/user/repo/issues"
}
問(wèn)題反饋系統(tǒng)的 URL,或者是 email 地址之類的鏈接。用戶通過(guò)該途徑向你反饋問(wèn)題。
author項(xiàng)目的維護(hù)者。
{
"author": {
"name": "Your Name",
"email": "you@xxx.com",
"url": "http://your-x.com"
},
"author": "Your Name <you@xxx.com> (http://your-x.com)"
}
作者信息,一個(gè)人。
contributors{
"contributors": [
{ "name": "Your Friend", "email": "friend@xxx.com", "url": "http://friends-xx.com" }
{ "name": "Other Friend", "email": "other@xxx.com", "url": "http://other-xx.com" }
],
"contributors": [
"Your Friend <friend@xxx.com> (http://friends-xx.com)",
"Other Friend <other@xxx.com> (http://other-xx.com)"
]
}
貢獻(xiàn)者信息,可能很多人。
指定包含在項(xiàng)目中的文件,以及項(xiàng)目的入口文件。
files{
"files": [
"filename.js",
"directory/",
"glob/*.{js,json}"
]
}
項(xiàng)目包含的文件,可以是單獨(dú)的文件、整個(gè)文件夾,或者通配符匹配到的文件。
main{
"main": "filename.js"
}
項(xiàng)目的入口文件。
man{
"man": "./man/doc.1",
"man": ["./man/doc.1", "./man/doc.2"]
}
項(xiàng)目的入口文件。
directories{
"directories": {
"lib": "path/to/lib/",
"bin": "path/to/bin/",
"man": "path/to/man/",
"doc": "path/to/doc/",
"example": "path/to/example/"
}
}
當(dāng)你的包安裝時(shí),你可以指定確切的位置來(lái)放二進(jìn)制文件、man pages、文檔、例子等。
bin{
"bin": "bin.js",
"bin": {
"命令名稱": "bin/命令路徑/命令名稱.js",
"other-command": "bin/other-command"
}
}
隨著項(xiàng)目一起被安裝的可執(zhí)行文件。
types這是一個(gè)只在 TypeScript 中生效的字段,如果您的包有一個(gè) main.js 文件,您還需要在 package.json 文件中指明主聲明文件。 將 types 屬性設(shè)置為指向 bundled 的聲明文件。 例如:
{
"types": "./lib/main.d.ts",
}
如果您的主聲明文件名為 index.d.ts 并且位于包的根目錄(index.js旁邊),則不需要標(biāo)記 types 屬性,建議這樣做。
esnext完整的提案在這里。 簡(jiǎn)短說(shuō)明:
esnext:ES模塊中使用階段4功能(或更舊版本)的源代碼,未編譯。main:指向一個(gè)CommonJS模塊(或UMD模塊),其 JavaScript 與 Node.js 當(dāng)前可以處理的一樣現(xiàn)代。module 用例應(yīng)該可以通過(guò) esnext 處理。browser 可以通過(guò) esnext 的擴(kuò)展版本來(lái)處理{
"main": "main.js",
"esnext": {
"main": "main-esnext.js",
"browser": "browser-specific-main-esnext.js"
}
}
另請(qǐng)參閱:通過(guò) npm 交付未編譯的源代碼
browser"browser": {
"module-a": "./shims/module-a.js",
"./server/only.js": "./shims/client-only.js"
}
字段由模塊作者提供,作為 JavaScript 包或組件工具的提示,用于打包模塊以供客戶端使用。 提案就在這里。
{
"name": "mod",
"exports":{
".": "./lib/index.js",
"./lib/*": "./lib/*.js"
}
}
使用最新的 exports 字段導(dǎo)出,可規(guī)避 main 字段局限性 具體參考
{
"name": "mod",
"exports": {
".": "./index.js",
"./sub": "./src/sub.js"
}
}
導(dǎo)入
import sub from "mod/sub"
. 唯一的導(dǎo)出){
"exports": {
".": "./dist/index.js"
}
}
簡(jiǎn)寫(xiě)
{
"exports": "./dist/index.js"
}
| :- | - |
|---|---|
export | 通過(guò) import 或 import() 或 es 模塊加載的任何頂層導(dǎo)入或解析操作加載時(shí),匹配。 |
require | 當(dāng)包通過(guò) require() 加載時(shí)匹配。預(yù)期的格式包括 CommonJS、JSON 和本地插件。 |
node | 匹配任何 Node.js 環(huán)境。可以是 cjs 或 es 模塊文件。必須在 import 或 require 之后。 |
default | 默認(rèn)的降級(jí)條件??梢允且粋€(gè) cjs 或 es 模塊文件。這個(gè)條件應(yīng)該總是排在最后。 |
{
"exports": {
".": {
"import":"./dist/index.mjs",
"require":"./dist/index.cjs", // 當(dāng)包通過(guò) `require()` 加載時(shí)匹配
"node": "./dist/ployfill.js", // 匹配任何 `Node.js` 環(huán)境
"default": "./dist/default.js" // 默認(rèn)的降級(jí)條件
}
}
}
require 和 import 互斥,所以 require 不能加載 es 的模塊,export 不能加載 cjs 模塊
main Vs exports{
"main": "./index.js",
"exports": "./index.js"
}
如果同時(shí)出現(xiàn) mainexports 字段,只會(huì)讀取 exports 字段
包里還可以包含一些可執(zhí)行腳本或者其他配置信息。
scripts腳本是定義自動(dòng)化開(kāi)發(fā)相關(guān)任務(wù)的好方法,比如使用一些簡(jiǎn)單的構(gòu)建過(guò)程或開(kāi)發(fā)工具。 在 scripts 字段里定義的腳本,可以通過(guò) yarn run <script> 命令來(lái)執(zhí)行。 例如,下面 build-project 腳本可以通過(guò) yarn run build-project 調(diào)用,并執(zhí)行 node build-project.js。
{
"scripts": {
"build-project": "node build-project.js"
}
}
有一些特殊的腳本名稱。 如果定義了 preinstall 腳本,它會(huì)在包安裝前被調(diào)用。 出于兼容性考慮,install、postinstall 和 prepublish 腳本會(huì)在包完成安裝后被調(diào)用。
start 腳本的默認(rèn)值為 node server.js。
參考文檔:npm docs
scripts對(duì)于以下腳本,npm 支持 package.json 文件的 scripts 默認(rèn)命令字段:
prepublish: 在打包并發(fā)布包之前運(yùn)行,以及在沒(méi)有任何參數(shù)的本地 npm 安裝之前運(yùn)行prepare: 在打包和發(fā)布包之前運(yùn)行,在沒(méi)有任何參數(shù)的本地 npm install 上運(yùn)行,以及安裝 git 依賴項(xiàng)時(shí)。 這是在 preublish 之后運(yùn)行,但是在 preublishOnly 之前運(yùn)行prepublishOnly: 在包準(zhǔn)備和打包之前運(yùn)行,僅限于npm發(fā)布prepack: 在打包 tarball 之前運(yùn)行(在 npm pack,npm publish,以及安裝 git 依賴項(xiàng)時(shí))postpack: 在生成 tarball 之后運(yùn)行并移動(dòng)到其最終目標(biāo)publish, postpublish: 在包發(fā)布后運(yùn)行preinstall: 在安裝軟件包之前運(yùn)行install, postinstall: 安裝包后運(yùn)行preuninstall, uninstall: 在卸載軟件包之前運(yùn)行postuninstall: 在卸載軟件包之后運(yùn)行preversion: 在改變包版本之前運(yùn)行version: 改變包版本后運(yùn)行,但提交之前postversion: 改變包版本后運(yùn)行,然后提交pretest, test, posttest: 由 npm test 命令運(yùn)行prestop, stop, poststop: 由 npm stop 命令運(yùn)行prestart, start, poststart: 由 npm start 命令運(yùn)行prerestart, restart, postrestart: 由 npm restart 命令運(yùn)行。 注意:如果沒(méi)有提供重啟腳本,npm restart 將運(yùn)行 stop 和start 腳本preshrinkwrap, shrinkwrap, postshrinkwrap: 由 npm shrinkwrap 命令運(yùn)行參考文檔:npm docs.
config{
"config": {
"port": "8080"
}
}
配置你的腳本的選項(xiàng)或參數(shù)。
{
"scripts": {
"run": "echo $npm_package_config_port"
}
}
配置中的鍵作為環(huán)境變量公開(kāi)給腳本(scripts)。
你的包很可能依賴其他包。你可以在你的 package.json 文件里指定那些依賴。
dependencies這些是你的包的開(kāi)發(fā)版和發(fā)布版都需要的依賴。
{
"dependencies": {
"colors": "*",
"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",
"elf": "~1.2.3",
"two": "2.x",
"thr": "3.3.x",
"lat": "latest",
"dyl": "file:./path/to/dyl",
"pla": "https://github.com/user/project/tarball/branch",
"stu": "git://github.com/user/project.git#commit-ish"
}
}
你可以指定一個(gè)確切的版本、一個(gè)最小的版本 (比如 >=) 或者一個(gè)版本范圍 (比如 >= ... <)。 包也可以指向本地的一個(gè)目錄文件夾。
參考文檔:npm docs.
{
"name": "my-workspaces-powered-project",
"workspaces": [
"./pkg/*",
"packages/a",
"packages/b"
]
}
支持從單個(gè)頂級(jí)根包中管理本地文件系統(tǒng)中的多個(gè)包。
├┈┈ node_modules
┆ ├┈┈ a -> ../packages/a
┆ ╰┈┈ b -> ../packages/b
├┈┈ package-lock.json
├┈┈ package.json
╰┈┈ packages
├┈┈ a
┆ ╰┈┈ package.json
├┈┈ b
┆ ╰┈┈ package.json
參考文檔:workspaces
devDependencies{
"devDependencies": {
"package-2": "^0.4.2"
}
}
這些是只在你的包開(kāi)發(fā)期間需要,但是生產(chǎn)環(huán)境不會(huì)被安裝的包。
overrides{
"overrides": {
"foo": "1.0.0"
}
}
對(duì)依賴項(xiàng)的依賴項(xiàng)進(jìn)行特定更改,例如用已知的安全問(wèn)題替換依賴項(xiàng)的版本
peerDependencies{
"peerDependencies": {
"package-3": "^2.7.18"
}
}
平行依賴允許你說(shuō)明你的包和其他包版本的兼容性。添加可選設(shè)置以消除丟失的對(duì)等依賴性警告,#6671 。
optionalDependencies{
"optionalDependencies": {
"package-5": "^1.6.1"
}
}
可選依賴可以用于你的包,但不是必需的。如果可選包沒(méi)有找到,安裝還可以繼續(xù)。
bundledDependencies{
"bundledDependencies": [
"package-4"
]
}
打包依賴是發(fā)布你的包時(shí)將會(huì)一起打包的一個(gè)包名數(shù)組。
peerDependenciesMeta{
"peerDependenciesMeta": {
"node-sass": {
"optional": true
},
"sass": {
"optional": true
},
"fibers": {
"optional": true
}
}
}
它允許對(duì)等依賴項(xiàng)標(biāo)記為可選
你可以提供和你的包關(guān)聯(lián)的系統(tǒng)級(jí)的信息,比如操作系統(tǒng)兼容性之類。
engines指定使用你的包客戶必須使用的版本,這將檢查 process.versions 以及當(dāng)前 yarn 版本。
{
"engines": {
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0",
"node": ">=4.4.7 <7.0.0",
"zlib": "^1.2.8",
"yarn": "^0.14.0"
}
}
此檢查遵守正常的 semver 規(guī)則,但有一個(gè)例外。 它允許預(yù)發(fā)布版本匹配未明確指定預(yù)發(fā)布的 semver。 例如,1.4.0-rc.0 匹配 >=1.3.0,但它與典型的 semver 檢查不匹配。
os{
"os": ["darwin", "linux"],
"os": ["!win32"]
}
此選項(xiàng)指定你的包的操作系統(tǒng)兼容性,它會(huì)檢查 process.platform。
cpu{
"cpu": ["x64", "ia32"],
"cpu": ["!arm", "!mips"]
}
使用這個(gè)選項(xiàng)指定你的包將只能在某些 CPU 體系架構(gòu)上運(yùn)行,這會(huì)檢查 process.arch。
private{
"private": true
}
如果你不想你的包發(fā)布到包管理器(npm 或者 私有包管理),設(shè)置為 true。
publishConfig這些配置值將在你的包發(fā)布時(shí)使用。比如,你可以給包打標(biāo)簽。
{
"publishConfig": {
"registry": "https://registry.npm.taobao.org"
}
}
這是一組將在發(fā)布時(shí)使用的配置值。 如果要設(shè)置標(biāo)記,注冊(cè)表或訪問(wèn)權(quán)限,則特別方便,以便確保給定的包未標(biāo)記為 latest,發(fā)布到全局公共 registry 或默認(rèn)情況下,作用域模塊(@scoped)是私有的。
可以覆蓋任何配置值,但只有 tag,registry 和 access 可能對(duì)于發(fā)布而言很重要,npm-config。
flat如果你的包只允許給定依賴的一個(gè)版本,你想強(qiáng)制和命令行上 yarn install --flat 相同的行為,把這個(gè)值設(shè)為 true。
{
"flat": true
}
請(qǐng)注意,如果你的 package.json 包含 "flat": true 并且其它包依賴你的包 (比如你在構(gòu)建一個(gè)庫(kù),而不是應(yīng)用), 其它那些包也需要在它們的 package.json 加上 "flat": true,或者在命令行上用 yarn install --flat 安裝。
resolutions{
"resolutions": {
"transitive-package-1": "0.0.29",
"transitive-package-2": "file:./local-forks/transitive-package-2",
"dependencies-package-1/transitive-package-3": "^2.1.1"
}
}
允許您覆蓋特定嵌套依賴項(xiàng)的版本。 有關(guān)完整規(guī)范,請(qǐng)參見(jiàn)選擇性版本解析 RFC。
注意,yarn install --flat 命令將會(huì)自動(dòng)在 package.json 文件里加入 resolutions 字段。
感谢您访问我们的网站,您可能还对以下资源感兴趣:
国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片