0

我有一个像这样的项目结构

文件夹结构

.js 文件中大约有 10 个 JS 文件comlab1并且lab2有一个config.json文件,它告诉在 10 个文件中哪些文件要连接并放置app-min.jsdist/lab1or中dist/lab2

在 gulp 文件中,我创建了类似的内容。

var filesArr = [];
var labName;

// Player Task
gulp.task('player', function () {
  return gulp.src(filesArr)
    .pipe(eslint())
    .pipe(babel())
    .pipe(concat('app-min.js'))
    .pipe(uglify({
      compress: {
        drop_console: true
      }
    }).on('error', gutil.log))
    .pipe(gulp.dest('dist/' + labName));
});

// Clean
gulp.task('clean', function () {
  if (readJson()) {
    return del([
      'dist/' + labName
    ]);
  }
  return null;
});

// Watch
gulp.task('watch', function () {
  gulp.watch(filesArr, gulp.series('player'));
});

// Read Json and create JS Array
function readJson() {
  // LAB STRUCTURE
  var _n = prompt('Specify the LAB name. ');
  labName = _n;
  var _path = path.resolve('./src/' + _n);
  var _exists = fs.existsSync(_path);
  if (_exists) {
    var _json = fs.readFileSync(path.resolve(_path + '/labstructure.json'), 'utf-8');
    var _jObj = JSON.parse(_json).labObj.components;
    for (var i = 0; i < _jObj.length; i++) {
      var _jsName = 'src/com/component/' + _jObj[i].ref + '.js';
      if (filesArr.indexOf(_jsName) === -1) {
        filesArr.push(_jsName);
      }
    }
  }
  return _exists;
}

gulp.task('default', gulp.series('clean', 'player', 'watch'));

这里filesArr看起来像:

[ 'src/com/component/ColorActClass.js',
  'src/com/component/PanelCompClass.js',
  'src/com/component/ToggleCompClass.js',
  'src/com/component/SliderCompClass.js',
  'src/com/component/CheckBoxCompClass.js',
  'src/com/component/ButtonCompClass.js',
  'src/com/component/LabelCompClass.js',
  'src/com/component/InputBoxClass.js',
  'src/com/component/ColorMonitorClass.js',
  'src/com/component/MsgBoxClass.js',
  'src/com/component/ConfBoxClass.js',
  'src/com/component/NumberPadClass.js',
  'src/com/main/lib/webfontloader.js',
  'src/com/main/lib/howler.core.min.js',
  'src/com/main/PlayerClass.js',
  'src/kl1001_color/BrainClass.js' ]

这首先工作得很好。但是当任何 JS 被修改时,在watch player任务中会eslint在一些未触及的文件上抛出错误。这并不总是发生,而是如果手表运行 10-20 分钟然后它会抛出错误。像这样:

错误图像

在这种情况下CheckBoxCompClass.js,不是被修改的文件,但仍然存在问题。最重要的是,分号已经到位。如果这个文件有问题,那么eslint应该首先抛出错误。

请帮忙。

4

1 回答 1

0

不小心,我的 NVM 设置为旧版本。在更新 NVM 并将当前 NVM 版本设置为最新版本后解决了该问题。

于 2019-04-30T11:31:45.697 回答