在使用grunt构建项目过程中发现了一个很奇葩的现象,那就是js压缩打包到public文件夹后,再执行grunt-string-replace后,原本压缩打包后的js和html等都会复原成未压缩打包的状态。
先看一下grunt-string-replace部分代码:
'string-replace': {
dev: {
files: {
'public/': ["utils/*.js","*.html"]
},
options: {
replacements: [
{
pattern: /loadRandomMathUrl/ig,
replacement: Math.random()
},
{
pattern: /config.localUrl/ig,
replacement: "config.localUrl"
}
]
}
}
}
经过多次修改后,发现这个问题用grunt-string-replace解决不了,所以改用grunt另一个文本替换插件:grunt-text-replace
具体配置如下:
首先先下载插件:
npm install grunt-text-replace --save-dev
gruuntFile.js修改如下:
// 替换配置
replace: {
dev: {
src: ["public/utils/*.js","public/*.html"], // 需要替换的文件
overwrite: true, // 替换后的文件是否覆盖原文件
replacements: [
{
from: /loadRandomMathUrl/ig,
to: Math.random()
},
{
from: /config.localUrl/ig,
to: "config.localUrl"
}
]
}
}
// 注册替换任务
grunt.loadNpmTasks('grunt-text-replace');
// 执行dev任务
grunt.registerTask('dev', [
'build',
'replace:dev'
]);
然后查看public文件夹,压缩文件都正常了!!!