diff --git a/package.json b/package.json index 4a0b489970..05550d2bdf 100644 --- a/package.json +++ b/package.json @@ -165,6 +165,7 @@ "@vue/runtime-dom@3": "3.4.38", "@vue/shared@3": "3.4.38", "cropperjs": "1.6.2", + "less": "4.3.0", "echarts": "5.4.1", "follow-redirects": "1.14.8", "regenerator-runtime": "0.13.9", diff --git a/packages/theme-saas/build/gulp-dist.js b/packages/theme-saas/build/gulp-dist.js index 5e596a16e7..e5356f5d0b 100644 --- a/packages/theme-saas/build/gulp-dist.js +++ b/packages/theme-saas/build/gulp-dist.js @@ -42,11 +42,37 @@ fs.writeFileSync('../src/index.less', `${note}\n\n${importStr}`) function compile() { const tailwindcss = require('tailwindcss') + console.log('开始编译LESS文件...') + console.log('处理的文件:', lessFiles) + const task = gulp .src(lessFiles, { since: gulp.lastRun(compile) }) + .on('error', (err) => { + console.error('❌ 读取源文件时出错:', err.message) + console.error('错误堆栈:', err.stack) + }) .pipe(svgInline(svgInlineOption)) + .on('error', (err) => { + console.error('❌ SVG内联处理时出错:', err.message) + console.error('错误堆栈:', err.stack) + }) .pipe(less()) + .on('error', (err) => { + console.error('❌ LESS编译时出错:', err.message) + console.error('错误堆栈:', err.stack) + console.error('文件路径:', err.filename) + console.error('行号:', err.line) + console.error('列号:', err.column) + }) .pipe(postcss([tailwindcss('../tailwind.config.js'), require('autoprefixer')])) + .on('error', (err) => { + console.error('❌ PostCSS处理时出错:', err.message) + console.error('错误堆栈:', err.stack) + console.error('插件:', err.plugin) + if (err.file) console.error('文件:', err.file) + if (err.line) console.error('行号:', err.line) + if (err.column) console.error('列号:', err.column) + }) .pipe( prefixer({ borwsers: ['last 1 version', '> 1%', 'not ie <= 8'], @@ -54,16 +80,55 @@ function compile() { remove: true }) ) + .on('error', (err) => { + console.error('❌ Autoprefixer处理时出错:', err.message) + console.error('错误堆栈:', err.stack) + }) .pipe(svgInline(svgInlineOption)) + .on('error', (err) => { + console.error('❌ 第二次SVG内联处理时出错:', err.message) + console.error('错误堆栈:', err.stack) + }) .pipe(cssmin()) + .on('error', (err) => { + console.error('❌ CSS压缩时出错:', err.message) + console.error('错误堆栈:', err.stack) + }) .pipe(gulp.dest(dist)) - - if (syncToTinyVueProject) task.pipe(gulp.dest(devDist)) + .on('error', (err) => { + console.error('❌ 写入目标目录时出错:', err.message) + console.error('错误堆栈:', err.stack) + }) + .on('end', () => { + console.log('✅ 编译完成,文件已输出到:', dist) + }) + + if (syncToTinyVueProject) { + task + .pipe(gulp.dest(devDist)) + .on('error', (err) => { + console.error('❌ 同步到开发目录时出错:', err.message) + console.error('错误堆栈:', err.stack) + }) + .on('end', () => { + console.log('✅ 文件已同步到开发目录:', devDist) + }) + } return task } -gulp.task('compile', compile) +gulp.task('compile', (done) => { + compile() + .on('error', (err) => { + console.error('❌ 编译任务失败:', err.message) + done(err) + }) + .on('end', () => { + console.log('✅ 编译任务完成') + done() + }) +}) function copyCssvar() { const task = gulp.src(jsFiles, { allowEmpty: true, since: gulp.lastRun(copyCssvar) }).pipe(gulp.dest(`${dist}`)) @@ -73,7 +138,17 @@ function copyCssvar() { return task } -gulp.task('copycssvar', copyCssvar) +gulp.task('copycssvar', (done) => { + copyCssvar() + .on('error', (err) => { + console.error('❌ 复制CSS变量任务失败:', err.message) + done(err) + }) + .on('end', () => { + console.log('✅ 复制CSS变量任务完成') + done() + }) +}) function copySvgs() { const task = gulp.src(svgFiles).pipe(gulp.dest(`${dist}/svgs`), { since: gulp.lastRun(copySvgs) }) @@ -83,7 +158,17 @@ function copySvgs() { return task } -gulp.task('copysvgs', copySvgs) +gulp.task('copysvgs', (done) => { + copySvgs() + .on('error', (err) => { + console.error('❌ 复制SVG文件任务失败:', err.message) + done(err) + }) + .on('end', () => { + console.log('✅ 复制SVG文件任务完成') + done() + }) +}) function copyImage() { const task = gulp.src(imageFiles).pipe(gulp.dest(`${dist}/images`), { since: gulp.lastRun(copyImage) }) @@ -93,7 +178,17 @@ function copyImage() { return task } -gulp.task('copyimage', copyImage) +gulp.task('copyimage', (done) => { + copyImage() + .on('error', (err) => { + console.error('❌ 复制图片文件任务失败:', err.message) + done(err) + }) + .on('end', () => { + console.log('✅ 复制图片文件任务完成') + done() + }) +}) function copyPlugin() { const task = gulp.src(pluginFiles).pipe(gulp.dest(`${dist}/plugins`), { since: gulp.lastRun(copyPlugin) }) @@ -103,7 +198,17 @@ function copyPlugin() { return task } -gulp.task('copyplugin', copyPlugin) +gulp.task('copyplugin', (done) => { + copyPlugin() + .on('error', (err) => { + console.error('❌ 复制插件文件任务失败:', err.message) + done(err) + }) + .on('end', () => { + console.log('✅ 复制插件文件任务完成') + done() + }) +}) function copyTheme() { const task = gulp.src(themeFiles).pipe(gulp.dest(`${dist}/theme`), { since: gulp.lastRun(copyTheme) }) @@ -113,7 +218,17 @@ function copyTheme() { return task } -gulp.task('copyTheme', copyTheme) +gulp.task('copyTheme', (done) => { + copyTheme() + .on('error', (err) => { + console.error('❌ 复制主题文件任务失败:', err.message) + done(err) + }) + .on('end', () => { + console.log('✅ 复制主题文件任务完成') + done() + }) +}) gulp.task('build', gulp.series('compile', 'copycssvar', 'copysvgs', 'copyimage', 'copyplugin', 'copyTheme'))