gulpfile.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. const path = require('path');
  2. const gulp = require('gulp');
  3. const gulpTS = require('gulp-typescript');
  4. const gulpBabel = require('gulp-babel');
  5. const merge2 = require('merge2');
  6. const del = require('del');
  7. const tsConfig = require('./tsconfig.json');
  8. const getBabelConfig = require('./getBabelConfig');
  9. gulp.task('cleanLib', function cleanLib() {
  10. return del(['lib/**/*']);
  11. });
  12. function compileTSX(isESM) {
  13. const targetDir = isESM ? 'lib/es' : 'lib/cjs';
  14. const tsStream = gulp.src(['**/*.ts', '**/*.tsx', '!_story/**/*.*', '!node_modules/**/*.*', '!lib/**/*.*'])
  15. .pipe(gulpTS({
  16. ...tsConfig.compilerOptions,
  17. rootDir: path.join(__dirname, '..')
  18. }));
  19. const jsStream = tsStream.js
  20. .pipe(gulpBabel(getBabelConfig({ isESM })))
  21. .pipe(gulp.dest(targetDir));
  22. const dtsStream = tsStream.dts.pipe(gulp.dest(targetDir));
  23. return merge2([jsStream, dtsStream]);
  24. }
  25. gulp.task('compileTSXForESM', function compileTSXForESM() {
  26. return compileTSX(true);
  27. });
  28. gulp.task('compileTSXForCJS', function compileTSXForCJS() {
  29. return compileTSX(false);
  30. });
  31. gulp.task('compileLib', gulp.series(['cleanLib', gulp.parallel('compileTSXForESM', 'compileTSXForCJS')]));