Webpack 在 ES5 中生成箭头函数

Iva*_*nko 13 javascript ecma typescript webpack

我想使用 TypeScript 模块并通过 Webpack 捆绑它们。这是我的配置文件:

webpack.config.js:

const path = require('path');

module.exports = () => {
    return {
        entry: './index.ts',
        output: {
            filename: 'bundle.js',
            path: path.resolve(__dirname, 'dist'),
        },
        module: {
            rules: [{
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/,
            }],
        },
    };
};
Run Code Online (Sandbox Code Playgroud)

tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es3"
  },
  "include": ["./**/*"],
  "exclude": ["node_modules/**/*", "webpack.config.js"]
}
Run Code Online (Sandbox Code Playgroud)

也许我从文档中弄错了。目的是在 ES5(甚至更早版本)中生成代码。但这是我的捆绑文件:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es3"
  },
  "include": ["./**/*"],
  "exclude": ["node_modules/**/*", "webpack.config.js"]
}
Run Code Online (Sandbox Code Playgroud)

它有一个箭头函数,这是在 ES6 中添加的。我很迷惑。我怎样才能摆脱它?


编辑:

这是我尝试编译的代码:

(()=>{var n=function(n,o){console.warn(o)};n(0,0),n(0,1)})();
Run Code Online (Sandbox Code Playgroud)

编辑2:

另外,我在生产模式下运行编译过程。(idk,也许这是有用的信息)

Yos*_*tik 9

决定只是添加target: ['web', 'es5']到您的 webpack 配置中。

您也可以设置target: 'es5',但在这种情况下,存在一些问题。至少在我没有指定“web”的情况下,TerserWebpackPlugin 拒绝在生产模式下压缩文件。