gulpfile.js 1.2 KB

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