Webpack支持在构建时通过webpack.DefinePlugin
替换常量表达式这对于预处理代码以便针对不同的构建环境非常有用。
然而,尽管有无数的实验和研究,但我无法任何替换生效。
我知道插件部分是由webpack识别的,因为输出是uglified。
我的实际用例要复杂得多,但我遇到的问题通过以下最小代码和配置进行演示。
webpack 2.2.1
test.js
document.write ("xx")
我希望将“xx”转换为“SOMETHING DIFFERENT”
webpack.config.js
var webpack = require('webpack');
module.exports = {
plugins: [
new webpack.DefinePlugin(
{
"xx" : JSON.stringify("SOMETHING DIFFERENT")
}
)
, new webpack.optimize.UglifyJsPlugin()
]
}
命令行
Webpack test.js out.js
输出片段......
… t(t.s=1)}([function(n,t){document.write("xx")},function(n,t,r){r(0),n.exports=r(0)}]);
xx不会替换为SOMETHING DIFFERENT
答案 0 :(得分:1)
list<Vertex*>::iterator
只会替换标识符。您正在尝试替换字符串的某些部分,但字符串根本没有被触及。
如果您使用:
DefinePlugin
你会得到预期的结果:
document.write(xx)
不要被document.write("SOMETHING DIFFERENT");
周围的引号弄糊涂,这在这种情况下实际上不需要,但用于定义包含在标识符中无效的符号的键。当密钥是有效的标识符时它会起作用(它会自动转换为字符串),否则你需要将它放在引号中,因为任何字符串都可以用作键。例如:
"xx"