我正在将我的项目与webpack捆绑在一起。为了操作某些文件,我将替换某个节点模块中的特定值。为了实现这一点,我正在使用string-replace-loader。我将以下代码添加到我的webpack配置中但没有成功。
{
test: /\.js$/,
loader: 'string-replace',
query: {
search: '[MouseEvent]',
replace: '[]'
}
}
在bundeld文件中,不替换字符串。这些文件位于文件夹node_modules / ng2-bootstrap中。所以我可以指定这个吗?
答案 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。 请注意,错误发生在包含/排除
的正则表达式中