gulpfile.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. 'use strict';
  2. const gulp = require('gulp');
  3. const concat = require('gulp-concat');
  4. const merge2 = require('merge2');
  5. const minifyCss = require('gulp-minify-css');
  6. const gulpFilter = require('gulp-filter');
  7. const order = require('gulp-order');
  8. const del = require('del');
  9. const templateCache = require('./scripts/templateCache');
  10. const i18n = require('./scripts/i18n');
  11. const paths = {
  12. cache: 'src/cache.js',
  13. templates: 'src/**/templates/*.html',
  14. jsOptions: 'src/options/**/*.js',
  15. jsPopup: 'src/popup/**/*.js',
  16. locales: [
  17. 'src/**/*.js',
  18. 'src/**/*.html',
  19. 'src/**/*.json',
  20. ],
  21. copy: [
  22. 'src/**',
  23. '!src/cache.js',
  24. '!src/**/templates/**',
  25. '!src/**/templates',
  26. '!src/**/views',
  27. '!src/options/**/*.js',
  28. '!src/popup/**/*.js',
  29. '!src/_locales/**',
  30. ],
  31. };
  32. gulp.task('watch', function () {
  33. gulp.watch([].concat(paths.cache, paths.templates), ['templates']);
  34. gulp.watch(paths.jsOptions, ['js-options']);
  35. gulp.watch(paths.jsPopup, ['js-popup']);
  36. gulp.watch(paths.copy, ['copy-files']);
  37. gulp.watch(paths.locales, ['copy-i18n']);
  38. });
  39. gulp.task('clean', function () {
  40. return del(['dist']);
  41. });
  42. gulp.task('templates', function () {
  43. return merge2([
  44. gulp.src(paths.cache),
  45. gulp.src(paths.templates).pipe(templateCache()),
  46. ]).pipe(concat('cache.js'))
  47. .pipe(gulp.dest('dist'));
  48. });
  49. gulp.task('js-options', function () {
  50. return gulp.src(paths.jsOptions)
  51. .pipe(order([
  52. '**/tab-*.js',
  53. '!**/app.js',
  54. ]))
  55. .pipe(concat('options/app.js'))
  56. .pipe(gulp.dest('dist'));
  57. });
  58. gulp.task('js-popup', function () {
  59. return gulp.src(paths.jsPopup)
  60. .pipe(order([
  61. '**/base.js',
  62. '!**/app.js',
  63. ]))
  64. .pipe(concat('popup/app.js'))
  65. .pipe(gulp.dest('dist'));
  66. })
  67. gulp.task('copy-files', function () {
  68. const cssFilter = gulpFilter(['**/*.css'], {restore: true});
  69. return gulp.src(paths.copy)
  70. .pipe(cssFilter)
  71. .pipe(minifyCss())
  72. .pipe(cssFilter.restore)
  73. .pipe(gulp.dest('dist/'));
  74. });
  75. gulp.task('copy-i18n', function () {
  76. return gulp.src(paths.locales)
  77. .pipe(i18n.extract({
  78. base: 'src',
  79. prefix: '_locales',
  80. touchedOnly: true,
  81. useDefaultLang: true,
  82. markUntouched: false,
  83. }))
  84. .pipe(gulp.dest('dist'));
  85. });
  86. gulp.task('default', ['templates', 'js-options', 'js-popup', 'copy-files', 'copy-i18n']);
  87. gulp.task('i18n', function () {
  88. return gulp.src(paths.locales)
  89. .pipe(i18n.extract({
  90. base: 'src',
  91. prefix: '_locales',
  92. touchedOnly: false,
  93. useDefaultLang: false,
  94. markUntouched: true,
  95. }))
  96. .pipe(gulp.dest('src'));
  97. });