我正在将我的项目与 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/