[英]gulp-uglifyjs error when gulp.src returns no files
我正在遍歷每個app
創建一個folderName.min.js
的目錄中,文件夾中的文件夾數量未知。
Gulp腳本:
var es = require('event-stream');
var uglify = require('gulp-uglifyjs');
var fs = require('fs');
var path = require('path');
function getFolders(dir) {
return fs.readdirSync(dir)
.filter(function (file) {
return fs.statSync(path.join(dir, file)).isDirectory();
})
}
gulp.task('js', function () {
var folders = getFolders('./src/app/');
var streams = folders.map(function (folder) {
return gulp.src(folder + '**/*.js')
.pipe(uglify(folder + '.min.js', {
mangle: true
}))
.pipe(gulp.dest('./dist/js'))
});
return es.concat.apply(null, streams);
});
我遇到的問題是,並非每個文件夾都包含*.js
文件。 當gulp-uglifyjs遇到這種情況時,我得到
gulp-uglifyjs - No files given; aborting minification
並且流中止並且所有后續任務都不會運行。 我能嗎
a)如果在這種情況下運行,請告訴uglifyjs繼續執行
b)如果gulp.src沒有返回文件,則跳過任務?
解決方案是修改我的getFolders函數,使其僅返回包含JavaScript文件的文件夾。 我通過遍歷app
內的每個子目錄並檢查是否找到任何*.js
文件來完成此操作。
function getJSFolders(dir) {
return fs.readdirSync(dir)
.filter(function (file) {
var files;
var isDir = fs.statSync(path.join(dir, file)).isDirectory();
var hasJs = false;
if (isDir) {
files = getFiles(path.join(dir, file));
for (var i = 0; i < files.length; i++) {
if (path.extname(files[i]) === '.js') {
hasJs = true;
break;
}
}
}
return isDir && hasJs;
});
}
function getFiles(dir, filesArr) {
var files = fs.readdirSync(dir);
filesArr = filesArr || [];
for (var i in files) {
if (!files.hasOwnProperty(i)) continue;
var name = dir + '/' + files[i];
if (fs.statSync(name).isDirectory()) {
getFiles(name, filesArr);
} else {
filesArr.push(name);
}
}
return filesArr;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.