使用ejs 的单引号变双引号问题
今日写ejs发现个坑
首先html是这样
<script>
// 输出全局变量
window._global = JSON.parse('<%-JSON.stringify(_global)%>');
</script>
然后使用HtmlWebpackPlugin输出 ejs,由node渲染
new HtmlWebpackPlugin({
template: path.resolve(__dirname, '../entry/index.html'),
chunks: ['stock'],
filename: 'index.ejs',
title: 'title',
inject: true,
alwaysWriteToDisk: true
}),
开发环境没什么问题,最终网页上展示的是这样
<script>
// 输出全局变量
window._global = JSON.parse('{"env":"dev","userInfo":"1111","_csrf":"Fp8HVwGk-L61TuUxNhUxjeONwQz42Ol_YJCQ"}');
</script>
但是生产环境就不对了,变成了什么样呢
<script>window._global=JSON.parse("{"env":"dev","userInfo":"1111","_csrf":"9VM53FgI-ONdFk7LxPlV55QJPTtj-GstiUEk"}")</script>
可以看到单引号变成了双引号
查来查去发现,我们在导入html的时候,html-loader在生产环境是默认开启的minimize,因此单引号变成了双引号,所以这里加上minimize:false就可以啦