gulpfile.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const { parallel, series } = require('gulp')
  2. const { shellTask, whenFirstModified, fileExists, mkdirp } = require('./scripts/lib/util')
  3. const { writePkgJsons } = require('./scripts/lib/pkg-json-write')
  4. const { bundlPkgDefs } = require('./scripts/lib/pkg-dts')
  5. const { writePkgReadmes } = require('./scripts/lib/pkg-readme')
  6. const { writePkgLicenses } = require('./scripts/lib/pkg-license')
  7. const { minifyJs, minifyCss } = require('./scripts/lib/minify') // combine into one task? make part of rollup?
  8. const { lint } = require('./scripts/lib/lint')
  9. const { archive } = require('./scripts/lib/archive')
  10. const { writeLocales, watchLocales } = require('./scripts/lib/locales')
  11. const buildDts = exports.dts = series(
  12. shellTask('npm:tsc:dts'), // generates granular .d.ts files
  13. bundlPkgDefs // combines them
  14. )
  15. exports.lint = lint
  16. exports.archive = archive
  17. exports.json = writePkgJsons
  18. exports.readme = writePkgReadmes
  19. exports.license = writePkgLicenses
  20. exports.locales = writeLocales
  21. exports.minify = parallel(minifyJs, minifyCss)
  22. exports.build = series(
  23. writePkgJsons, // important for node-resolution
  24. shellTask('npm:tsc'),
  25. writeLocales, // needs tsc
  26. parallel(
  27. shellTask('npm:rollup'), // needs tsc, copied scss, generated locales
  28. writePkgLicenses,
  29. writePkgReadmes,
  30. buildDts
  31. ),
  32. parallel(minifyJs, minifyCss)
  33. )
  34. exports.watch = series(
  35. writePkgJsons, // important for node-resolution
  36. parallel(
  37. shellTask('npm:tsc:watch'),
  38. series(
  39. waitTsc,
  40. writeLocales, // needs tsc
  41. parallel(
  42. shellTask('npm:rollup:watch'), // needs tsc, copied scss, generated locales
  43. writePkgLicenses, // doesn't watch!
  44. writePkgReadmes, // doesn't watch!
  45. buildDts, // doesn't watch!
  46. watchLocales // TODO: ignore initial
  47. )
  48. )
  49. )
  50. ) // doesn't minify!
  51. // BUG: right after clean, when watching, tsc re-compiles a lot (must be watching something)
  52. async function waitTsc() {
  53. let dir = 'tmp/tsc-output' // TODO: make a constant
  54. let dirExists = await fileExists(dir)
  55. if (!dirExists) {
  56. await mkdirp(dir)
  57. }
  58. return whenFirstModified(dir, { delay: 1000, disableGlobbing: true })
  59. }