代码之家  ›  专栏  ›  技术社区  ›  Jousi

巴贝尔不编译供应商查克

  •  1
  • Jousi  · 技术社区  · 8 年前

    我迁移到Webpack 4并根据文档设置所有内容,但是,我的 vendors.js chunk不是像主.js块。

    我已经把 vendors 进入 optimization.splitChunks.cacheGroups 对象,正如文档所建议的,但是没有找到方法使这些 "cacheGroups" 和巴贝尔一起编译。

    我的问题是其中一个库有一个ES6 class 而现在IE11由于这个事实已经不起作用了。

    我的网页包 optimization 对象看起来像:

      optimization: {
        splitChunks: {
          cacheGroups: {
            styles: {
              name: 'styles',
              test: /\.css$/,
              chunks: 'all',
              enforce: true
            },
            vendor: {
              name: 'vendor',
              test: /[\\/]node_modules[\\/]/,
              chunks: 'all',
              enforce: true
            }
          }
        }
      }
    

    有没有办法强迫webpack用babel编译供应商?

    当做

    1 回复  |  直到 7 年前
        1
  •  1
  •   Pavel Denisjuk    8 年前

    你应该把整个 webpack 为用户提供更多上下文。

    不管怎样, optimization 步骤与实际的运输几乎没有关系。你的 vendor chunk设置为只包含来自 node_modules 几乎从未被处理过(除非你特别告诉 babel-loader 包含某个包)。

    因为我不知道你是怎么配置的 巴别塔装载机 我建议你这样做:

    {
        test: /\.js$/,
        exclude: (file) => {
            return /node_modules/.test(file) && !file.includes("/node_modules/my-es6-module/");
        }
    }
    

    其思想是排除所有包含 节点模块 除非文件路径包含需要用babel处理的特定模块的名称。

    通常,将ES6代码发布到 npm 是一个非常糟糕的做法,应该不惜一切代价避免。

    如果这还不够,请使用您的webpack配置更新您的问题,以便我们更深入地了解您的设置。

    推荐文章