webpack-replace-loader
webpack-replace-loader copied to clipboard
it not works! I want to replace dev code in prod env in webpack4.6
it not works! I want to replace dev code in prod env!
// Add a response interceptor
axios.interceptors.response.use(function (response) {
//@replaceStart
// Do something with response data
response.key = '1104'//just for dev code
//@replaceEnd
return response;
}, function (error) {
// Do something with response error
return Promise.reject(error);
});
webpack.js
{
test: /\.js$/,
loader: "string-replace-loader",
options: {
search: "@replaceStart[\w\W\s]*?@replaceEnd",
replace: "",
flags: 'g'
}
},
or
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: [
'babel-loader',
{
// test: /\.js$/,
loader: "string-replace-loader",
options: {
search: "@replaceStart[\w\W\s]*?@replaceEnd",
replace: "",
flags: 'g'
}
}
]
},
你好,你这种情况 this Loader 确实是没有办法处理的。 当初写这个 loader 的时候仅仅是为了处理我自己的工作中碰到打包问题。这是一个简单的字符串替换函数,功能很单一,仅仅可以替换字符串。为了使用方便,减少正则书写,所以设计为 search 是一个普通字符串,内部才将它将它转换为 RegExp 对象。
你这个问题可以如下修改 就能解决, 你试试。
// Add a response interceptor
axios.interceptors.response.use(function (response) {
$replaceString$ // 已经做了全字符转义,这个你可以随便写,保证不重复,别替换错了就行。
return response;
}, function (error) {
// Do something with response error
return Promise.reject(error);
});
假设你的 webpack 有如下 3 个配置文件:base.js、dev.js、build.js。。
base.js 不用修改 dev.js 如下修改
{
test: /\.js$/,
loader: "webpack-replace-loader",
options: {
search: "@replaceString@",
replace: "response.key = '1104'",
flags: 'g'
}
}
build.js如下修改
{
test: /\.js$/,
loader: "webpack-replace-loader",
options: {
search: "@replaceString@",
replace: "",
flags: 'g'
}
}
以上,如有问题欢迎接着讨论哦。