【问题标题】:New package.json `exports` field not working with TypeScript新的 package.json `exports` 字段不适用于 TypeScript
【发布时间】:2020-03-18 07:19:08
【问题描述】:

Node.js 13.2 版允许 ESM 模块和 a new package.json field(称为 exports)选择和重写导出的文件。

在 13.2 之前,我从库的 dist 文件夹中导入文件:

import myfile from 'mylibrary/dist/myfile'

在 13.2 中,我将此添加到我的 package.json

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

并尝试通过以下方式导入文件:

import myfile from 'mylibrary/myfile'

但是 Typescript 引发 2307 错误,说找不到模块。

【问题讨论】:

  • 好像被跟踪了here
  • 谢谢!我还在他们的回购中打开了一个问题。我将作为重复关闭。

标签: node.js typescript


【解决方案1】:

使用 npm CLI v7.0.0,您可以在 package.json 文件中添加 exports 字段。您应该使用 npm install -g npm@7 尝试最新的 npm CLI 版本。

https://blog.npmjs.org/post/626173315965468672/npm-v7-series-beta-release-and-semver-major查看有关此最新版本的更多信息

【讨论】:

  • 但这不适用于 TypeScript 项目
【解决方案2】:

TypeScript 方面需要做一些工作来支持这一点。该功能被跟踪here in github。 在该链接中还列出了一些解决方法。

【讨论】:

    【解决方案3】:

    它是 Typescript 4.5 的 upcoming feature,很快应该可用:

    // package.json
    {
        "name": "my-package",
        "type": "module",
        "exports": {
            ".": {
                // Entry-point for `import "my-package"` in ESM
                "import": "./esm/index.js",
    
                // Entry-point for `require("my-package") in CJS
                "require": "./commonjs/index.cjs",
    
                // Entry-point for TypeScript resolution
                "types": "./types/index.d.ts"
            },
        },
    
        // CJS fall-back for older versions of Node.js
        "main": "./commonjs/index.cjs",
    
        // Fall-back for older versions of TypeScript
        "types": "./types/index.d.ts"
    }
    

    目前,我已经设法使用typesVersions

      "main": "dist/index.js",
      "types": "dist/index.d.ts",
      "exports": {
        ".": "./dist/index.js",
        "./svg": "./dist/svg.js",
        "./html": "./dist/html.js",
        "./package.json": "./package.json"
      },
      "typesVersions": {
        "*": {
          "svg": ["dist/svg.d.ts"],
          "html": ["dist/html.d.ts"]
        }
      }
    

    【讨论】:

    • 我用的是 TS 4.5.2 还是不行
    猜你喜欢
    • 2021-12-04
    • 2023-01-17
    • 2020-08-13
    • 2012-03-24
    • 2015-04-30
    • 2017-11-17
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多