国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

package.json 備忘清單

這個(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"
}

規(guī)則

  • 必須小于或等于214個(gè)字符(包括 @scope/ 范圍包)
  • 不能以點(diǎn)(.)或下劃線(_)開(kāi)頭
  • 名稱中不得包含大寫(xiě)字母
  • 必須僅使用URL安全字符

version

{
  "version": "1.0.0"
}

包的當(dāng)前版本,嚴(yán)格遵循 Semantic Versioning 2.0.0 語(yǔ)義化版本規(guī)范。

Tips

  • 不要使用和 Node.js 核心模塊相同的名字。
  • 不要在名字里包含 js 或者 node 單詞。
  • 短小精悍,讓人看到名字就大概了解包的功能,記住它也會(huì)被用在 require() 調(diào)用里。
  • 保證名字在 npm registry 里是唯一的。
  • name 和 version 字段一起用于創(chuàng)建唯一ID

如果沒(méi)有 nameversion 字段,您的包將無(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ā)的包是你工作的一部分,最好和公司討論后再做決定。

license字段必須是以下之一

  • 如果你使用標(biāo)準(zhǔn)的許可證,需要一個(gè)有效地 SPDX 許可證標(biāo)識(shí)。
  • 如果你用多種標(biāo)準(zhǔn)許可證,需要有效的 SPDX 許可證表達(dá)式2.0語(yǔ)法表達(dá)式。
  • 如果你使用非標(biāo)準(zhǔn)的許可證,一個(gè) SEE LICENSE IN <文件名> 字符串指向你的包里頂級(jí)目錄的一個(gè) <文件名>。
  • 如果你不想在任何條款下授權(quán)其他人使用你的私有或未公開(kāi)的包,一個(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)題。

項(xiàng)目維護(hù)類字段

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模塊),其 JavaScriptNode.js 當(dāng)前可以處理的一樣現(xiàn)代。
  • 大多數(shù) 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 交付未編譯的源代碼

module

pkg.module 將指向具有 ES2015 模塊語(yǔ)法的模塊,但僅指向目標(biāo)環(huán)境支持的語(yǔ)法功能。 完整的描述在這里

{
  "module": "dist/my-package.esm.js"
}

支持:rollup, webpack

browser

"browser": {
    "module-a": "./shims/module-a.js",
    "./server/only.js": "./shims/client-only.js"
}

字段由模塊作者提供,作為 JavaScript 包或組件工具的提示,用于打包模塊以供客戶端使用。 提案就在這里

exports 導(dǎo)出

{
  "name": "mod",
  "exports":{
    ".": "./lib/index.js",
    "./lib/*": "./lib/*.js"
  }
}

使用最新的 exports 字段導(dǎo)出,可規(guī)避 main 字段局限性 具體參考

exports 導(dǎo)出子路徑中的模塊

{
  "name": "mod",
  "exports": {
    ".": "./index.js",
    "./sub": "./src/sub.js"
  }
}

導(dǎo)入

import sub from "mod/sub"

exports 簡(jiǎn)寫(xiě) (. 唯一的導(dǎo)出)

{
  "exports": {
    ".": "./dist/index.js"
  }
}

簡(jiǎn)寫(xiě)

{
  "exports": "./dist/index.js"
}

條件導(dǎo)出(exports)

:--
export通過(guò) importimport()es 模塊加載的任何頂層導(dǎo)入或解析操作加載時(shí),匹配。
require當(dāng)包通過(guò) require() 加載時(shí)匹配。預(yù)期的格式包括 CommonJS、JSON 和本地插件。
node匹配任何 Node.js 環(huán)境。可以是 cjses 模塊文件。必須在 importrequire 之后。
default默認(rèn)的降級(jí)條件??梢允且粋€(gè) cjses 模塊文件。這個(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í)條件
    }
  }
}

注意:由于 requireimport 互斥,所以 require 不能加載 es 的模塊,export 不能加載 cjs 模塊

main Vs exports

{
  "main": "./index.js",
  "exports": "./index.js"
} 

如果同時(shí)出現(xiàn) mainexports 字段,只會(huì)讀取 exports 字段

任務(wù)類字段

包里還可以包含一些可執(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、postinstallprepublish 腳本會(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)行 stopstart 腳本
  • 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.

workspaces

{
  "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)記為可選

系統(tǒng)

你可以提供和你的包關(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。

發(fā)布

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)是私有的。

可以覆蓋任何配置值,但只有 tagregistryaccess 可能對(duì)于發(fā)布而言很重要,npm-config

Yarn

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 字段。

另見(jiàn)