Goodmornig,
我在gruntfile中使用grunt-replace(https://github.com/outaTiME/grunt-replace)通过从json文件加载json对象来替换html文件中的某些字符串。
我想为这种方法增加一些灵活性,并且我定制了另一个名为'setopts'的任务,它只是为grunt.option添加了一些属性,我用以下方式使用'replace'任务:
replace: {
common: {
options: {
patterns: [
{
json: '<%=grunt.option("locales")%>'
}
]
},
files: [
{expand: true, flatten: true, src: ['public/sites/<%=grunt.option("domain")%>/index.html'], dest: 'public/sites/<%=grunt.option("domain")%>/'},
]
}
}
这是我的'setopts'任务:
grunt.registerTask('setopts', function (domain) {
locales = grunt.file.readJSON('src/locales/domain/myfile.json');
grunt.option('locales', locales);
grunt.option('domain', domain);
}
我执行以下任务:
grunt.registerTask('maintask', [ 'setopts:mydomain', 'replace:common']);
经过一些尝试,我发现'replace'任务中的'files'属性工作正常,但我在'patterns'属性中出错:
处理来源......错误 警告:处理“public / sites / xxxxx / index.html”文件时出错。使用--force继续。
这有什么问题?
感谢您的任何评论!
答案 0 :(得分:0)
我知道我迟到了1。5年,但也许其他人可能需要这个答案。
我实现它的方式是不使用grunt.option
。相反,我使用了grunt.config.set
。
replace: {
common: {
options: {
patterns: [
{
json: '<%= locales %>'
}
]
},
files: [
{expand: true, flatten: true, src: ['public/sites/<%= domain %>/index.html'], dest: 'public/sites/<%= domain %>/'},
]
}
}
注意locales
变量用作json
属性的值的方式。
这是setopts
任务:
grunt.registerTask('setopts', function (domain) {
locales = grunt.file.readJSON('src/locales/domain/myfile.json');
grunt.config.set('locales', locales);
grunt.config.set('domain', domain);
}
希望它有助于某人:)