【问题标题】:gulp-uglifyjs error when gulp.src returns no filesgulp.src 不返回文件时出现 gulp-uglifyjs 错误
【发布时间】:2014-06-29 16:30:08
【问题描述】:

我在名为 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 没有返回文件,则跳过任务?

【问题讨论】:

    标签: javascript node.js gulp uglifyjs


    【解决方案1】:

    解决方案是修改我的 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2017-03-26
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多