From 341b86ffb481c9332bd8729c43c4eb0df4a1e0e2 Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Fri, 11 Nov 2022 05:25:59 +0000 Subject: [PATCH] doc: add exports in the package.json (#46) 906cbdd1523014beb0bb3c54475d2c54f1046a07 --- docs/package.json.html | 92 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/docs/package.json.html b/docs/package.json.html index 357a9167..1278726c 100644 --- a/docs/package.json.html +++ b/docs/package.json.html @@ -41,7 +41,7 @@

这个快速参考备忘清单,显示了关于 package.json 文件中所需内容的全部内容。

重要字段

介绍

本快速参考备忘清单是您需要了解的关于 package.json 文件中所需内容的全部内容。 它必须是实际的 JSON,而不仅仅是 JavaScript 对象字面量。

    @@ -263,6 +263,96 @@ }

    字段由模块作者提供,作为 JavaScript 包或组件工具的提示,用于打包模块以供客户端使用。 提案就在这里

    +

exports

+ +

所有包的版本都支持 main 字段,但它的功能是有限的。现在在 package.json 可以使用最新的 exports 字段导出。具体参考:https://nodejs.org/api/packages.html

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

导出和导入

+
    +
  1. +

    如果同时出现 main 和 exports 字段,只会读取 exports 字段

    +
    {
    +  "main": "./index.js",
    +  "exports": "./index.js"
    +} 
    +
    +
  2. +
  3. +

    导出子路径中的模块

    +
    {
    +  "name": "mod",
    +  "exports": {
    +    ".": "./index.js",
    +    "./sub": "./src/sub.js"
    +  }
    +}
    +
    +
    // 导入
    +import sub from "mod/sub"
    +
    +
  4. +
  5. +

    如果 . 是唯一的导出时,其提供了语法糖

    +
    {
    +  "exports": {
    +    ".": "./dist/index.js"
    +  }
    +  //简写
    +  //"exports": "./dist/index.js"
    +}
    +
    +
  6. +
  7. +

    条件导出。根据导出包的格式不同而设置的情况。

    +
      +
    • 注意:由于 require 和 import 互斥,所以 require 不能加载 es 的模块,export 不能加载 cjs 模块
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    :--
    export通过 import 或 import() 或 es 模块加载的任何顶层导入或解析操作加载时,匹配。
    require当包通过 require() 加载时匹配。预期的格式包括 CommonJS、JSON 和本地插件。
    node匹配任何 Node.js 环境。可以是 cjs 或 es 模块文件。必须在 import 或 require 之后。
    default默认的降级条件。可以是一个 cjs 或 es 模块文件。这个条件应该总是排在最后。
    +
    {
    +  "exports": {
    +    ".": {
    +      "import":"./dist/index.mjs",
    +      "require":"./dist/index.cjs",
    +      "node": "./dist/ployfill.js",
    +      "default": "./dist/default.js"
    +    }
    +  }
    +}
    +
    +
  8. +

任务类字段

包里还可以包含一些可执行脚本或者其他配置信息。

scripts