123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- const path = require('path');
- const { Buffer } = require('buffer');
- const through2 = require('through2');
- const gulp = require('gulp');
- const merge2 = require('merge2');
- const gulpTS = require('gulp-typescript');
- const gulpBabel = require('gulp-babel');
- const sass = require('gulp-sass')(require('sass'));
- const del = require('del');
- const tsConfig = require('./tsconfig.json');
- const getBabelConfig = require('./getBabelConfig');
- gulp.task('cleanLib', function cleanLib() {
- return del(['lib/**/*']);
- });
- function compileTS(isESM) {
- const targetDir = isESM ? 'lib/es' : 'lib/cjs';
- const tsStream = gulp.src(['**/*.ts', '!node_modules/**/*.*'])
- .pipe(gulpTS(tsConfig.compilerOptions));
- const jsStream = tsStream.js
- .pipe(gulpBabel(getBabelConfig({ isESM })))
- .pipe(gulp.dest(targetDir));
- const dtsStream = tsStream.dts.pipe(gulp.dest(targetDir));
- return merge2([jsStream, dtsStream]);
- }
- gulp.task('compileTSForESM', function compileTSForESM() {
- return compileTS(true);
- });
- gulp.task('compileTSForCJS', function compileTSForCJS() {
- return compileTS(false);
- });
- const excludeScss = [
- '!**/button/splitButtonGroup.scss',
- '!**/steps/bacisSteps.scss',
- '!**/steps/fillSteps.scss',
- '!**/steps/navSteps.scss',
- '!**/table/operationPanel.scss',
- '!**/tooltip/arrow.scss',
- '!**/autoComplete/option.scss',
- '!**/select/option.scss',
- ];
- gulp.task('compileScss', function compileScss() {
- return gulp.src(['**/*.scss', '!node_modules/**/*.*', '!**/rtl.scss', '!**/variables.scss', "!**/animation.scss", ...excludeScss])
- .pipe(through2.obj(
- function (chunk, enc, cb) {
- const rootPath = path.join(__dirname, '../../');
- const scssVarStr = `@import "${rootPath}/packages/semi-theme-default/scss/index.scss";\n`;
- const scssBuffer = Buffer.from(scssVarStr);
- chunk.contents = Buffer.concat([scssBuffer, chunk.contents]);
- cb(null, chunk);
- }
- ))
- .pipe(sass({
- charset: false
- }).on('error', sass.logError))
- .pipe(gulp.dest('lib/es'))
- .pipe(gulp.dest('lib/cjs'));
- });
- gulp.task('moveScss', function moveScss() {
- return gulp.src(['**/*.scss', '!node_modules/**/*.*'])
- .pipe(gulp.dest('lib/es'))
- .pipe(gulp.dest('lib/cjs'));
- });
- gulp.task('compileLib',
- gulp.series(
- [
- 'cleanLib', 'compileScss',
- 'moveScss',
- gulp.parallel('compileTSForESM', 'compileTSForCJS'),
- ]
- )
- );
- gulp.task('findDupCSSVariables', function findDupCSSVariables() {
- return gulp.src(['**/variable?.scss', '!node_modules/**/*.*'])
- .pipe(through2.obj((chunk, enc, cb) => {
- const fileStr = chunk.contents.toString(enc);
- const lines = fileStr.split('\n');
- const variables = new Set();
- for (let line of lines) {
- if (/\$[a-z]+(-[a-z0-9_]+)+/.test(line)) {
- const variable = line.split(':')[0];
- if (variables.has(variable)) {
- console.error(`❌ ${variable} dup`);
- } else {
- variables.add(variable);
- }
- }
- }
- cb();
- }));
- });
|