我正在使用webpack 3
&试图使用string replace loader。
此代码用于webpack1.X
module: {
loaders: [
{
test: /fileName\.js$/,
loader: 'string-replace',
query: {
search: 'jQuery',
replace: 'window.$'
}
}
]
}
我也试过这个:
module: {
loaders: [
{
test: /fileName\.js$/,
loader: 'string-replace-loader',
query: {
search: 'jQuery',
replace: 'window.$'
}
}
]
}
我需要做些什么才能确保此加载程序在webpack 3中正常工作。没有错误,但在目标文件中没有替换字符串。
答案 0 :(得分:1)
您是否尝试将flags: 'g'
添加到查询选项中:
query: {
search: 'jQuery',
replace: 'window.$'
flags: 'g'
}
答案 1 :(得分:1)
WebPack 2更改了必须将配置传递给加载程序的方式。所以你可以试试(我没试过这个):
module: {
rules: [{
test: /fileName\.js$/,
use: {
loader: 'string-replace',
options: {
query: {
search: 'jQuery',
replace: 'window.$'
}
}
}
}]
}
或者你可以尝试这个字符串替换加载器,因为它似乎是为WebPack 2编写的。 https://github.com/dmitrySheshko/replace-string-loader
或您可以自己编写: https://webpack.js.org/contribute/writing-a-loader/
的字符串替换-loader.js
const { getOptions } = require('loader-utils');
module.exports = function(source) {
const options = getOptions(this);
return source.replace(options.replace, options.with);
};
webpack.config.js
module: {
rules: [{
test: /fileName\.js$/,
use: {
loader: resolve(__dirname, './string-replace-loader.js'),
options: {
replace: /jQuery/gi,
with: 'window.$'
}
}
}]
}
答案 2 :(得分:0)
在Webpack 3和Webpack 4中,您可以使用string-replace-webpack-plugin在编译时按模式执行字符串替换。
对于Webpack 3,将以下代码添加到您的webpack.config.js
中:
var StringReplacePlugin = require("string-replace-webpack-plugin");
module.exports = {
module: {
loaders: [
// configure replacements for file patterns
{
test: /fileName\.js$/,
loader: StringReplacePlugin.replace({
replacements: [
{
pattern: /jQuery/g,
replacement: function (_match, _p1, _offset, _string) {
return "window.$";
}
}
]})
}
]
},
plugins: [
// an instance of the plugin must be present
new StringReplacePlugin()
]
}
对于Webpack 4,语法如下:
var StringReplacePlugin = require("string-replace-webpack-plugin");
module.exports = {
module: {
rules: [{
test: /fileName\.js$/,
use: [{
loader: StringReplacePlugin.replace({
replacements: [{
pattern: /jQuery/g,
replacement: function (_match, _p1, _offset, _string) { return "window.$"; }
}]
})
}]
}]
},
plugins: [
new StringReplacePlugin()
]
}