【发布时间】:2018-10-09 23:39:25
【问题描述】:
我的项目中有一个假设的 Typescript 文件(简化示例)。
Utils.ts:
import * as HelperFromNodeModules from 'helper-from-node-modules';
class Utils {
static foo() {
return HelperFromNodeModules.parse(...);
}
}
导入 helper-from-node-modules 包含一个 Javascript 文件。
helper-from-node-modules.js:
const dep = require('foo');
function parse(...) {
return bar.map((e) => {...});
}
来自@types/helper-from-node-modulesindex.d.ts:
export function parse(...);
tsconfig.json 包含以下内容:
{
...
"target": "es5",
"lib": ["es2015.collection","es6", "dom"],
"sourceMap": true,
"allowJs": true,
...
}
所以我的问题是 Typescript 编译器的输出文件是我编译的源代码加上所有体面的巨大串联。由于helper-from-node-modules 始终是一个 .js 文件,编译器似乎只是将其内容附加到输出文件中。因此,尽管 "target": "es5" 输出文件仍然包含 es6 工件,如 const 和 (e) => {...},导致稍后出现严格预期 es5 javascript 的错误。 p>
有没有办法告诉 Typescript 编译器/转译器也输出 javascript 依赖项上的 es5?
如果你关心上下文:
我犯了一个可怕的错误,即使用 react-create-app-typescript 和 react-scripts-ts 作为我的 React 应用程序的样板。内置的 webpack 堆栈非常对源代码应该来自哪里以及编译后的源必须是 es5 有意见。如果尝试缩小任何 es6 工件,打包的 minifier/uglifier 将会崩溃。我知道我可以运行npm run-script eject 并修改各种配置脚本,但我试图避免这种混乱。我很想把源代码编译成 es6 而不要弄乱他们的 webpack 堆栈。
【问题讨论】:
标签: javascript typescript ecmascript-6 tsconfig react-create-app