如何将ES6转换为第三方库的ES5?

时间:2017-09-29 13:27:12

标签: node.js typescript webpack

我有一个很好的webpack设置,但是当我导入一些用ES6编写的第三方库时,我看到了一个UglifyJS发出的错误。以下是node-postgres的示例:

module.exports = {
  prepareValue: function prepareValueWrapper (value) {
    // this ensures that extra arguments do not get passed into prepareValue
    // by accident, eg: from calling values.map(utils.prepareValue)
    return prepareValue(value)
  },
  normalizeQueryConfig,
  postgresMd5PasswordHash,
  md5
}

以下是它在ES5中的外观:

module.exports = {
  prepareValue: function prepareValueWrapper (value) {
    // this ensures that extra arguments do not get passed into prepareValue
    // by accident, eg: from calling values.map(utils.prepareValue)
    return prepareValue(value)
  },
  normalizeQueryConfig: normalizeQueryConfig,
  postgresMd5PasswordHash: postgresMd5PasswordHash,
  md5: md5
}

当UglifyJS处理原始代码时,我看到了这个错误:

  

来自UglifyJs的proxy.js中的错误

     

意外的令牌:punc(,)[proxy.js:382,22]

指向上面的代码。

在我编译TypeScript项目时,我怀疑我需要通过Webpack流程中的一些转换程序处理第三方库代码,然后在捆绑之前将它们转换为ES5。

这是我的webpack.config.js

const path = require('path');

const root = (dir) => {
    return path.resolve(__dirname, dir);
};

module.exports = {
    entry: './src/main.ts',
    module: {
        rules: [
            {
                test: /\.ts$/,
                use: 'ts-loader',
                exclude: /node_modules/
            }
        ]
    },
    resolve: {
        extensions: [".ts", ".js"],
        modules: [root('node_modules'), root('src')]
    },
    output: {
        filename: 'proxy.js',
        path: path.resolve(__dirname, 'build')
    },
    target: 'node'
};

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用uglify-es缩小ES6代码,或使用Babel和ES2015 preset将代码转换为ES5。