我正在编写一个Gruntjs脚本,它应该
contrib有一个布尔选项process在处理文件时替换模板(如<% pkg.version %>)。
控制复制也有一个选项processContent,,但是我不知道如何用这个选项触发模板处理。
module.exports = function(grunt) {
grunt.initConfig({
meta: {
banner: ' \
/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n \
* <%= pkg.homepage %>\n \
*/\n\n',
build_date: '<%= grunt.template.today("yyyy-mm-dd") %>',
build_num: process.env.BUILD_NUMBER || 0, // Jenkins build number if available
version_string: '<%= pkg.version %>-<%= meta.build_num %>',
dist_dir: 'dist/<%= pkg.version %>'
},
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
stripBanners: {
block: true
},
process: true,
separator: '\n /* ----- */ \n',
banner: '<%= meta.banner %>'
},
dist: {
src: [
'src/ViewUtility.js',
'src/ViewClass.js',
'src/ViewClass.js',
'src/MarksClass.js',
'src/ViewVersion.js'],
dest: 'build/View.js'
}
},
uglify: {
options: {
mangle: {
except: ['jQuery', 'Hammer']
},
banner: '<%= meta.banner %>'
},
dist: {
src: '<%= pkg.main %>',
dest: 'build/View.min.js'
}
},
copy: {
options: {
processContent: true
},
dist: {
files: [
{expand: true, cwd: 'build/', src: ['**'], dest: '<%= meta.dist_dir %>/view/'},
{expand: true, cwd: 'src/', src: ['View-tp.js'], dest: '<%= meta.dist_dir %>/view/'},
{expand: true, cwd: 'src/', src: ['plugin.json'], dest: '<%= meta.dist_dir %>/'}
]
}
},
compress: {
dist: {
options: {
archive: 'view_' + '<%= meta.version_string %>_<%= meta.build_date %>' + '.zip'
},
expand: true,
cwd: 'dist/',
src: ['**/*']
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.registerTask('default', ['concat', 'uglify', 'copy', 'compress']);
};上面的processContent不起作用。请提出解决办法。
发布于 2013-09-05 07:26:01
options.processContent属性确实是一个函数。您可以轻松地将其与内置的process templating of grunt连接起来。
这段代码片段完成了您的<%= pkg.version %>技巧。
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
distdir: 'dist',
srcdir: 'src',
copy: {
index: {
options: {
processContent: function (content, srcpath) {
return grunt.template.process(content);
}
},
src: '<%= srcdir %>/index.html',
dest: '<%= distdir %>/index.html'
}
}
});发布于 2013-08-14 18:05:09
试试这样的东西。
processContent: function(content, srcpath) {
content = content.replace(/^[\x20\t]+/mg, '').replace(/[\x20\t]+$/mg, '');
content = content.replace(/^[\r\n]+/, '').replace(/[\r\n]+$/, '');
return content;
}发布于 2013-08-14 04:21:45
processContent是一种函数类型。见文档:https://github.com/gruntjs/grunt-contrib-copy#processcontent
processContent
Type: Function(content, srcpath)
This option is passed to grunt.file.copy as an advanced way to control the file contents that are copied.https://stackoverflow.com/questions/17724550
复制相似问题