Webpack字符串替换加载器不工作

时间:2016-09-30 12:29:41

标签: javascript node.js webpack

我正在将我的项目与webpack捆绑在一起。为了操作某些文件,我将替换某个节点模块中的特定值。为了实现这一点,我正在使用string-replace-loader。我将以下代码添加到我的webpack配置中但没有成功。

  {
    test: /\.js$/,
    loader: 'string-replace',
    query: {
      search: '[MouseEvent]',
      replace: '[]'
    }
  }

在bundeld文件中,不替换字符串。这些文件位于文件夹node_modules / ng2-bootstrap中。所以我可以指定这个吗?

1 个答案:

答案 0 :(得分:1)

您应该使用include: [/node_modules\/module_name/],因为默认情况下webpack不包括node_modules。

但在阅读类似问题的问题时,您可能必须使用"排除,包含"像这样:

{
  test: /\.js$/,
  loader: 'string-replace',
  exclude: /node_modules(?!\/module_name)/
  query: {
    search: '[MouseEvent]',
    replace: '[]'
  }
}

如果您想阅读问题go here

评论后编辑:

经过一些尝试后,我已经完成了这个(使用其他插件,但看起来像你的插件),我已经用这段代码完成了这项工作:

  preLoaders: [
    {
      test: /\.js$/,
      loader: StringReplacePlugin.replace({
        replacements: [
          {
            pattern: /.*?(react).*?/ig,
            replacement: function (match, p1, offset, string) {
              console.log("found");
              return "found";
            }
          }
        ]}),
      include: /node_modules\\react.*/
    }
  ],

它可能适用于装载机,我可以使用预装载器,因为我已经有一个装载机用于js。 请注意,错误发生在包含/排除

的正则表达式中