我正在使用grunt-contrib的concat和uglify模块来处理一些JavaScript。目前,如果src/js/是空的,它们仍会创建一个(空的)concat文件,以及缩小的版本和源映射。
我希望任务在继续之前检测src/js/文件夹是否为空,如果为空,则任务应该跳过(而不是失败)。有什么想法如何做到这一点?
我希望任务在继续之前检测src/js/文件夹是否为空,如果为空,则任务应该跳过(而不是失败)。有什么想法如何做到这一点?
grunt.registerTask('build_js', function(){
// get first task's `src` config property and see
// if any file matches the glob pattern
if (grunt.config('concat').js.src.some(function(src){
return require('glob').sync(src).length;
})) {
// if so, run the task chain
grunt.task.run([
'trimtrailingspaces:js'
, 'concat:js'
, 'uglify:yomama'
]);
}
});
grunt.file.expand
来测试是否存在与某个globbing模式匹配的文件。grunt.registerTask('build_js', function(){
// if any file matches the glob pattern
if (grunt.file.expand("subdir/**/*.js").length) { /** new bit here **/
// if so, run the task chain
grunt.task.run([
'trimtrailingspaces:js'
, 'concat:js'
, 'uglify:yomama'
]);
}
});
src
字符串值或files
数组中使用它吗?还是我应该像@Kosmotaur那样在函数的顶部使用它?如果是这样,你能模仿他的布局并提供一个完整的示例函数吗? - jtfairbankhttps://www.npmjs.org/package/grunt-file-exists
您可以检查文件是否存在。(我没有尝试过,但源代码似乎支持grunt expands。(*、** ...))grunt.initConfig({
fileExists: {
scripts: ['a.js', 'b.js']
},
});
grunt.registerTask('conditionaltask', [
'fileExists',
'maintask',
]);
grunt.initConfig({
fileExists: {
scripts: ['a.js', 'b.js'],
options: {tasks: ['maintask']}
},
});
grunt.registerTask('conditionaltask', [
'fileExists',
]);
grunt.task.run(options.tasks);
https://github.com/alexeiskachykhin/grunt-file-exists/blob/master/tasks/fileExists.js
在这行之后:grunt.log.ok();
Gruntfile.js
副本吗?你尝试过仅通过uglify
(包括连接)完成所有操作,只是为了测试吗? - Wallace Sidhrée