gulpfile.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const fs = require('fs');
  2. const path = require('path');
  3. const gulp = require('gulp');
  4. const eslint = require('gulp-eslint');
  5. const shell = require('gulp-shell');
  6. const yaml = require('js-yaml');
  7. gulp.task('lint', () => gulp.src([
  8. './source/js/**/*.js',
  9. './scripts/**/*.js'
  10. ]).pipe(eslint())
  11. .pipe(eslint.format()));
  12. gulp.task('lint:stylus', shell.task([
  13. 'npx stylint ./source/css/'
  14. ]));
  15. gulp.task('validate:config', cb => {
  16. const themeConfig = fs.readFileSync(path.join(__dirname, '_config.yml'));
  17. try {
  18. yaml.safeLoad(themeConfig);
  19. return cb();
  20. } catch (error) {
  21. return cb(new Error(error));
  22. }
  23. });
  24. gulp.task('validate:languages', cb => {
  25. const languagesPath = path.join(__dirname, 'languages');
  26. const languages = fs.readdirSync(languagesPath);
  27. const errors = [];
  28. languages.forEach(lang => {
  29. const languagePath = path.join(languagesPath, lang);
  30. try {
  31. yaml.safeLoad(fs.readFileSync(languagePath), {
  32. filename: path.relative(__dirname, languagePath)
  33. });
  34. } catch (error) {
  35. errors.push(error);
  36. }
  37. });
  38. return errors.length === 0 ? cb() : cb(errors);
  39. });
  40. gulp.task('default', gulp.series('lint', 'validate:config', 'validate:languages'));