在此脚本中,我检查css文件列表是否存在语法错误:
'use strict';
var fs = require('fs');
var chalk = require('chalk');
var rework = require('rework');
var expand = require ('glob-expand');
var conformance = require('rework-suit-conformance');
var files = expand({
filter: 'isFile',
cwd: 'build/'
}, ['**/*.css']);
files.forEach(function (file) {
var css = fs.readFileSync('build/' + file, 'utf-8');
try {
rework(css).use(conformance);
}
catch (e) {
console.log( chalk.red('Error in: ' + 'build/' + file) );
console.log( chalk.red(e) );
process.exit(1);
}
});
如果foreach循环完成且没有错误,我想显示一条成功消息:
console.log( chalk.green('Done, without errors.') );
但是我会把它放在哪里?什么是正确的方法?我可以将它放在文件的末尾,这不会在错误中找到,但这感觉不太正确..
答案 0 :(得分:1)
在forEach开始之前保留一个计数器变量。在catch块之后,输入以下内容:每次迭代成功完成时,递减计数器。检查计数器是否为零 - 如果是,则控制台.log('成功')
var fc = files.length;
files.forEach(function (file) {
var css = fs.readFileSync('build/' + file, 'utf-8');
try {
rework(css).use(conformance);
}
catch (e) {
console.log( chalk.red('Error in: ' + 'build/' + file) );
console.log( chalk.red(e) );
process.exit(1);
}
fc -= 1;
if (fc === 0) {
console.log('Success');
}
});
答案 1 :(得分:0)
我认为将after
放在forEach
是安全的。此外,如果有错误,它将在forEach
完成之前退出。如果forEach
完成,可以说一切顺利。
files.forEach(function (file) {
var css = fs.readFileSync('build/' + file, 'utf-8');
try {
rework(css).use(conformance);
}
catch (e) {
console.log( chalk.red('Error in: ' + 'build/' + file) );
console.log( chalk.red(e) );
// If any error happened, this should kill everything before proceeding
process.exit(1);
}
});
// If all went well, it should reach this code.
console.log( chalk.green('Done, without errors.') );