1
0

gulpfile.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const path = require('path');
  2. const { Buffer } = require('buffer');
  3. const through2 = require('through2');
  4. const gulp = require('gulp');
  5. const merge2 = require('merge2');
  6. const gulpBabel = require('gulp-babel');
  7. const gulpTS = require('gulp-typescript');
  8. const sass = require('gulp-sass')(require('sass'));
  9. const replace = require('gulp-replace');
  10. const del = require('del');
  11. const tsConfig = require('./tsconfig.json');
  12. const babelConfig = require('./babel.config');
  13. gulp.task('cleanLib', function cleanLib() {
  14. return del(['lib/**/*']);
  15. });
  16. gulp.task('compileTSX', function compileTSX() {
  17. const tsStream = gulp.src(['src/**/*.tsx', 'src/**/*.ts'])
  18. .pipe(gulpTS({
  19. ...tsConfig.compilerOptions,
  20. rootDir: path.join(__dirname, '..')
  21. }));
  22. const jsStream = tsStream.js
  23. .pipe(gulpBabel(babelConfig))
  24. .pipe(replace(/(import\s+)['"]([^'"]+)(\.scss)['"]/, '$1\'$2.css\''))
  25. .pipe(gulp.dest('lib/es'));
  26. const dtsStream = tsStream.dts.pipe(gulp.dest('lib/es'));
  27. return merge2([jsStream, dtsStream]);
  28. });
  29. gulp.task('compileScss', function compileScss() {
  30. return gulp.src(['src/**/*.scss'])
  31. .pipe(through2.obj(
  32. function (chunk, enc, cb) {
  33. const rootPath = path.join(__dirname, '../../');
  34. const scssVarStr = `@import "${rootPath}/packages/semi-theme-default/scss/index.scss";\n`;
  35. const scssBuffer = Buffer.from(scssVarStr);
  36. const buffers = [scssBuffer];
  37. chunk.contents = Buffer.concat([...buffers, chunk.contents]);
  38. cb(null, chunk);
  39. }
  40. ))
  41. .pipe(sass().on('error', sass.logError))
  42. .pipe(gulp.dest('lib/es'));
  43. });
  44. gulp.task('moveScss', function moveScss() {
  45. return gulp.src(['src/**/*.scss'])
  46. .pipe(gulp.dest('lib/es'));
  47. });
  48. gulp.task('compileLib', gulp.series(['cleanLib', 'compileScss', 'compileTSX', 'moveScss']));