From c4694ed8322c36a86e43350f56ae44d7eb54b04c Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 11 Nov 2022 13:44:09 +0800 Subject: [PATCH] doc: update `package.json.md`. (#46) --- docs/package.json.md | 182 ++++++++++++++++++++++++------------------- 1 file changed, 100 insertions(+), 82 deletions(-) diff --git a/docs/package.json.md b/docs/package.json.md index d32e915..01efc41 100644 --- a/docs/package.json.md +++ b/docs/package.json.md @@ -12,6 +12,8 @@ package.json 备忘清单 - [npm 文档](https://docs.npmjs.com/files/package.json) _(npmjs.com)_ - [yarnpkg 文档](https://classic.yarnpkg.com/en/docs/package-json) _(yarnpkg.com)_ +- [packages 文档](https://nodejs.org/api/packages.html) _(nodejs.org)_ +- [npm 备忘清单(速查表)](./npm.md) _(jaywcjlove.github.io)_ ### `name` @@ -329,82 +331,90 @@ https://registry.npmjs.org/[包名]/-/[包名]-[version].tgz 字段由模块作者提供,作为 `JavaScript` 包或组件工具的提示,用于打包模块以供客户端使用。 提案就[在这里](https://github.com/defunctzombie/package-browser-field-spec)。 ### `exports` - -所有包的版本都支持 main 字段,但它的功能是有限的。现在在 package.json 可以使用最新的 exports 字段导出。具体参考: +```json +{ + "name": "mod", + "exports":{ + ".": "./lib/index.js", + "./lib/*": "./lib/*.js" + } +} +``` - ```json - { - "name": "mod", - "exports":{ - ".": "./lib/index.js", - "./lib/*": "./lib/*.js" - } - } - ``` +使用最新的 `exports` 字段导出,可规避 `main` 字段局限性 [具体参考](https://nodejs.org/api/packages.html) -#### 导出和导入 +### exports 导出子路径中的模块 -1. 如果同时出现 main 和 exports 字段,只会读取 exports 字段 +```json +{ + "name": "mod", + "exports": { + ".": "./index.js", + "./sub": "./src/sub.js" + } +} +``` - ```json - { - "main": "./index.js", - "exports": "./index.js" - } - ``` +导入 -2. 导出子路径中的模块 +```js +import sub from "mod/sub" +``` - ```json - { - "name": "mod", - "exports": { - ".": "./index.js", - "./sub": "./src/sub.js" - } - } - ``` +### exports 简写 (`.` 唯一的导出) - ```js - // 导入 - import sub from "mod/sub" - ``` +```json +{ + "exports": { + ".": "./dist/index.js" + } +} +``` -3. 如果 `.` 是唯一的导出时,其提供了语法糖 +简写 - ```json - { - "exports": { - ".": "./dist/index.js" - } - //简写 - //"exports": "./dist/index.js" - } - ``` +```json +{ + "exports": "./dist/index.js" +} +``` -4. 条件导出。根据导出包的格式不同而设置的情况。 - - 注意:由于 require 和 import 互斥,所以 require 不能加载 es 的模块,export 不能加载 cjs 模块 +### 条件导出(exports) + - :- | - - :- | - - export | 通过 import 或 import() 或 es 模块加载的任何顶层导入或解析操作加载时,匹配。 - require | 当包通过 require() 加载时匹配。预期的格式包括 CommonJS、JSON 和本地插件。 - node | 匹配任何 Node.js 环境。可以是 cjs 或 es 模块文件。必须在 import 或 require 之后。 - default | 默认的降级条件。可以是一个 cjs 或 es 模块文件。这个条件应该总是排在最后。 +:- | - +:- | - +`export` | 通过 `import` 或 `import()` 或 `es` 模块加载的任何顶层导入或解析操作加载时,匹配。 +`require` | 当包通过 `require()` 加载时匹配。预期的格式包括 CommonJS、JSON 和本地插件。 +`node` | 匹配任何 `Node.js` 环境。可以是 `cjs` 或 `es` 模块文件。必须在 `import` 或 `require` 之后。 +`default` | 默认的降级条件。可以是一个 `cjs` 或 `es` 模块文件。这个条件应该总是排在最后。 - ```json - { - "exports": { - ".": { - "import":"./dist/index.mjs", - "require":"./dist/index.cjs", - "node": "./dist/ployfill.js", - "default": "./dist/default.js" - } - } - } - ``` +```js +{ + "exports": { + ".": { + "import":"./dist/index.mjs", + "require":"./dist/index.cjs", // 当包通过 `require()` 加载时匹配 + "node": "./dist/ployfill.js", // 匹配任何 `Node.js` 环境 + "default": "./dist/default.js" // 默认的降级条件 + } + } +} +``` + +注意:由于 `require` 和 `import` 互斥,所以 `require` 不能加载 `es` 的模块,`export` 不能加载 `cjs` 模块 + +### 导出和导入 + +```json +{ + "main": "./index.js", + "exports": "./index.js" +} +``` + +如果同时出现 ~~`main`~~ 和 `exports` 字段,只会读取 `exports` 字段 ## 任务类字段 @@ -412,6 +422,8 @@ https://registry.npmjs.org/[包名]/-/[包名]-[version].tgz ### `scripts` +脚本是定义自动化开发相关任务的好方法,比如使用一些简单的构建过程或开发工具。 在 `scripts` 字段里定义的脚本,可以通过 `yarn run