如何在webpack中定义加载器的优先级?

时间:2016-09-05 16:54:09

标签: javascript webpack

我使用webpack构建服务器构建,配置如下:

loaders: [
  {
    test: /\.js$/,
    exclude: [/node_modules/],
    loader: "babel-loader",
    query: {
      presets: ["es2015", "react"],
      plugins: ["transform-object-rest-spread"]
    }
  }, {
    test: new RegExp(`/
      stardust
      |redux-form
      |axios
      |shuffle
    `),
    loader: "null-loader"
  }
]

想法非常简单:如果某些内容与第二个加载器中的regexp匹配,则不应该加载它。它运行良好,直到我加载它:

import shuffle     from "shufflejs/dist/shuffle.min.js"

它与两个加载器匹配并加载到bundle。如何使null-loader优先级高于babel?

1 个答案:

答案 0 :(得分:1)

您可以使用webpack documentation中所述的预加载器,基本上您将使用带有null-loader的正则表达式作为预加载器,这样它将在加载器之前解析。因此,如果正则表达式匹配null-loader将被使用,并且它不会加载模块。

以下是修改过的代码:

document.getElementById

我能想到的唯一其他解决方案是依靠正则表达式来排除包含这些单词的文件。我不是Regex的专家,但我会尝试提出一个表达方式:

preLoaders: [
    {
        test: new RegExp(`/
            stardust
            |redux-form
            |axios
            |shuffle
        `),
        loader: "null-loader"
    }
],
loaders: [
    {
        test: /\.js$/,
        exclude: [/node_modules/],
        loader: "babel-loader",
        query: {
            presets: ["es2015", "react"],
            plugins: ["transform-object-rest-spread"]
        }
    }
]