【问题标题】:Webpack UglifyJsPlugin doesn't work on OSX but does on WindowsWebpack UglifyJsPlugin 在 OSX 上不起作用,但在 Windows 上起作用
【发布时间】:2017-02-16 15:48:32
【问题描述】:

当我尝试在 OSX 上编译我的 webpack 构建时,它会给出一个奇怪的错误,但在 Windows 上不会,也从未发生过。

在“{”上出错:/* harmony default export */ __webpack_exports__["default"] = class {

【问题讨论】:

    标签: webpack uglifyjs


    【解决方案1】:

    如果您使用的是 webpack 2,那么您很可能依赖于某些具有 jsnext:main 配置选项的模块,以将其代码作为 ES6 模块提供。在这些情况下,webpack 2 使用它们,它工作得很好,直到你尝试使用 Uglify,它无法处理 ES6 代码。

    你可能从 Babel 加载中排除你的 node_modules,你也应该这样做,但要让它工作,你需要明确告诉 webpack 包含这个 jsnext:main 模块。

    我在使用 preact-compat 时遇到了这个问题并像这样解决了它:

    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                include: [
                    path.resolve(__dirname, './src'),
                    path.resolve(__dirname, './node_modules/preact-compat/src')
                ]
            }
        ]
    }
    

    【讨论】:

    • 嗨,听起来不错。我自己做了一个(尴尬?)正则表达式,如下所示:exclude: /node_modules\/(?!@company\/private-module)/
    • 是的,如果你使用“include”而不是像我的代码示例一样,它只会使用来自 srcPath 的代码(将其更改为源文件所在的任何位置),从 node_modules 推送模块的路径你需要“Babelize”
    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2016-06-09
    • 2017-02-19
    相关资源
    最近更新 更多