TypeScript 的
--module node16 --moduleResolution node16
选项
当模块发出 commonjs 或 ecmascript 模块但我不知道如何双重发布时,这是完美的。
条件导出允许我们为
require
和
import
定义不同的入口点
"exports": {
"import": "./dist/esm/index.mjs",
"require": "./dist/cjs/index.js"
},
但是为了将 esm 发送到 dist/esm 并将 cjs 发送到 dist/cjs,我需要更改文件扩展名或构建之间的 package.json 类型,因为上面的第 3 点。
是否有打字稿编译器选项来覆盖 package.json 类型或文件扩展名并在使用
node16
模块时发出特定格式?
esnext
或
es2022
选项不起作用,因为它们不会启用第 1 点或第 2 点。是否有打字稿编译器选项来覆盖 package.json 类型或文件扩展名并在使用 node16 模块时发出特定格式?
不。反正还没有。
TypeScript 团队keeptalking关于双重构建支持,但太忙于讨论实现。他们似乎并不真正喜欢双包,并且他们继续“拒绝重写说明符”。然而,有一名团队成员正试图改变他们的观点。他们似乎需要两个 package.json 文件,这感觉非常像反模式,特别是因为 Node.js 支持 exports
type
(或
--module node16
)时可以推断出它们
nodenext
。有关如何运行双重构建的示例,包@knighted/duel 支持仅使用一个 package.json 和 tsconfig.json 与
tsc
进行双重构建,方法是使用另一个
type
动态创建第二个 package.json双构建。说明符也用@knighted/说明符重写。 notes 还提供了有关 TypeScript 当前对双重构建的支持的更多详细信息。