如何在 Webpack 中使用 React 使 Typescript 以 ES5 为目标?
How to have Typescript target ES5 with React in Webpack?
我们有一个用 Typescript 编写的 React 网络应用程序,它运行良好并且在 tsconfig.json
文件中以 ES6 为目标。
现在我们想在编译部署到生产环境后用Uglifyjs 缩小它。这失败了,因为 Uglify 只支持 ES5(即使是 #harmony 分支,我已经试过了)。
所以我需要 webpack 输出为 ES5。但是当我在我们的 tsconfig 文件中设置 "target": "es5"
时,webpack 编译失败说:Unexpected token (164:41)
You may need an appropriate loader to handle this file type.
我们如何使用 React 在 Typescript 中以 ES5 为目标使其工作?
附上错误截图:
答案是,你不能。
Babel 可以将 ES7 转换为 ES6。但它 can't transpile ES6 to ES5,因为它使用了 polyfill(浏览器中加载的 .js 库)。
因此,由于无法从源代码中获取 ES5,因此无法使用 Uglify。
您将不得不单独依靠 gzip 压缩 (which is a substantial size decrease)。
我们有一个用 Typescript 编写的 React 网络应用程序,它运行良好并且在 tsconfig.json
文件中以 ES6 为目标。
现在我们想在编译部署到生产环境后用Uglifyjs 缩小它。这失败了,因为 Uglify 只支持 ES5(即使是 #harmony 分支,我已经试过了)。
所以我需要 webpack 输出为 ES5。但是当我在我们的 tsconfig 文件中设置 "target": "es5"
时,webpack 编译失败说:Unexpected token (164:41)
You may need an appropriate loader to handle this file type.
我们如何使用 React 在 Typescript 中以 ES5 为目标使其工作?
附上错误截图:
答案是,你不能。
Babel 可以将 ES7 转换为 ES6。但它 can't transpile ES6 to ES5,因为它使用了 polyfill(浏览器中加载的 .js 库)。
因此,由于无法从源代码中获取 ES5,因此无法使用 Uglify。
您将不得不单独依靠 gzip 压缩 (which is a substantial size decrease)。