javascript - Webpack 字符串替换加载程序不起作用

标签 javascript node.js webpack

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

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

在bundeld 文件中,该字符串不会被替换。这些文件位于文件夹 node_modules/ng2-bootstrap 中。那么我也必须指定这一点吗?

最佳答案

你应该使用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 加载器。 请注意,错误出现在包含/排除的正则表达式上

关于javascript - Webpack 字符串替换加载程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39791574/

相关文章:

ruby-on-rails - 生产环境中的 Rails Webpacker 编译错误

javascript - 与 express Sequelize

javascript - 如何处理触摸设备的多级下拉菜单

javascript - 从 Angular 服务中删除对象

node.js - ngOninit 没有被称为 Angular 2 Express

node.js - 为什么node.js从0.12.x版本直接升级到4.0.0?

google-chrome - 对本地开发禁用 chrome 严格 MIME 类型检查

javascript - Headroom.js 和 ie9 支持

node.js - 在 WSL2 : Ubuntu 20. 04 for Windows 10 nodejs 中安装但 npm 不工作

laravel - 我应该如何将 laravel mix 生成的文件包含在我的脚本和样式中?