尝试对模块和目标有一些基本的了解。
我想知道典型 tsconfig.json 中模块和目标编译选项之间的区别
{ "compilerOptions": { "module": "es6", "sourceMap": true, "target": "es6" } }
如果我提供以下选项会发生什么:
模块:commonjs,目标:es6
模块:es6,目标:commonjs
模块:commonjs,目标:commonjs
有2个不同的东西。 --target
仅表示您用于编码的 ECMAScript 版本。 --module
仅表示您正在使用哪个模块系统,例如 commonjs
用于 Node 或 ES 模块,用于所有支持它和不支持它的模块。
更详细的解释在这里:Understanding "target" and "module" in tsconfig
另请参阅:Understanding "target" and "module" in tsconfig。
以下是来自文档 on compiler options 的引用:
--target 指定 ECMAScript 目标版本:“es3”(默认)、“es5”或“es6”。 --module 指定模块代码生成:“none”、“commonjs”、“amd”、“system”、“umd”、“es6”或“es2015”。只有 'amd' 和 'system' 可以与 --outFile 一起使用。 'es6' 和 'es2015' 值可以在以 ES5 或更低版本为目标时使用。
“target”属性用于指定您的 TypeScript 代码最终将编译成的 JavaScript 版本。 “module”属性指定了您编译的(TS-->JS)代码将使用的模块语法类型。例如,如果您将模块属性设置为“commonJS”,您编译的代码将使用“require/module.exports”来导入/导出。然而,模块属性不会影响编译代码的其余部分。为了清楚起见,请参考以下答案:https://stackoverflow.com/a/61215252/8659116