diff --git a/.gitignore b/.gitignore index 0300c483..2a047635 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,5 @@ projects/e-svga* @mf-types .output doc_build + +.rslib \ No newline at end of file diff --git a/package.json b/package.json index 2f789410..654115fa 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@commitlint/cli": "^17.8.0", "@commitlint/config-conventional": "^17.8.0", "@empjs/biome-config": "workspace:^", - "@rslib/core": "^0.13.2", + "@rslib/core": "^0.14.0", "cross-env": "^7.0.3", "serve": "14.2.5", "tsup": "8.5.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index 1f40da1d..e83f7b76 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -64,6 +64,8 @@ "scripts": { "dev": "tsup --watch --env.ENV dev", "build": "tsup --env.ENV prod", + "dev-rs": "rslib build --watch --env-mode development", + "build-rs": "rslib build --env-mode production", "ph": "pnpm publish --no-git-checks" }, "engines": { @@ -83,6 +85,7 @@ "@types/webpack": "^5.28.4", "@types/webpack-bundle-analyzer": "^4.6.2", "@types/webpack-sources": "^3.2.2", + "chokidar": "^4.0.3", "vue": "^3.5.21" }, "dependencies": { diff --git a/packages/cli/rslib.config.ts b/packages/cli/rslib.config.ts new file mode 100644 index 00000000..76e89621 --- /dev/null +++ b/packages/cli/rslib.config.ts @@ -0,0 +1,48 @@ +import {defineConfig, type RslibConfig} from '@rslib/core' + +export default defineConfig(({envMode}): RslibConfig => { + const isDev = envMode === 'development' + // console.log('isDev', isDev, envMode) + return { + lib: [ + { + bundle: true, + format: 'esm', + shims: { + esm: { + __filename: true, + __dirname: true, + require: true, + }, + }, + dts: true, + }, + { + bundle: true, + format: 'cjs', + shims: { + cjs: { + 'import.meta.url': true, + }, + }, + }, + ], + source: { + tsconfigPath: './tsconfig.json', + define: { + 'process.env.ENV': JSON.stringify(isDev ? 'dev' : 'prod'), + }, + entry: { + index: 'src/index.ts', + }, + }, + output: { + target: 'node', + sourceMap: isDev, + minify: !isDev, + externals: { + '@rsdoctor/rspack-plugin': 'commonjs @rsdoctor/rspack-plugin', + }, + }, + } +}) diff --git a/packages/cli/src/helper/buildPrint.ts b/packages/cli/src/helper/buildPrint.ts index 18962fae..7b5f7459 100644 --- a/packages/cli/src/helper/buildPrint.ts +++ b/packages/cli/src/helper/buildPrint.ts @@ -1,6 +1,7 @@ import fs from 'node:fs' import path from 'node:path' import type {Stats, StatsAsset} from '@rspack/core' +import chalk from 'chalk' import {gzipSizeSync} from 'gzip-size' import {blue, gray, green, magenta, red, white, yellow} from 'src/helper/color' import store from 'src/store' @@ -130,8 +131,76 @@ export async function printFileSizes(stats: Stats) { const totalSizeLabel = `${blue.bold('Total size:')} ${calcFileSize(totalSize)}` const gzippedSizeLabel = `${blue.bold('Gzipped size:')} ${calcFileSize(totalGzipSize)}` logger.info(`\n ${totalSizeLabel}\n ${gzippedSizeLabel}\n`) - logger.info(`${green('✓')} Ready in ${timeFormat(Number(origin.time))}\n`) + logger.info(`${chalk.green('ready ')}Built in ${timeFormat(Number(origin.time))}\n`) } -export function timeDone(mis: number | string = 0) { - logger.info(`${green('✓')} Ready in ${timeFormat(Number(mis))}`) +/** + * 统一的打印函数,用于显示不同类型的构建消息 + * @param type 消息类型: 'start' | 'ready' + * @param message 要显示的消息 + */ +function printMessage(type: 'start' | 'ready', message: string) { + const prefix = type === 'start' ? chalk.cyan('start ') : chalk.green('ready ') + console.log(prefix + chalk.white(message)) +} + +export function timeDone(mis: number | string = 0, tips = 'Ready') { + logger.info(`${chalk.green('ready ')}${tips} in ${timeFormat(Number(mis))}`) +} + +/** + * 显示构建开始提示 + */ +export function printBuildStart() { + printMessage('start', 'build started...') +} + +/** + * 显示构建完成提示 + * @param stats 构建统计信息 + */ +export function printBuildDone(stats: any) { + const data = stats?.toJson({all: false, colors: false, assets: false, chunks: false, timings: true}) + printMessage('ready', `built in ${chalk.bold((data.time / 1000).toFixed(2))} s`) +} + +/** + * 显示模块构建开始提示 + * @param moduleId 模块ID + * @param moduleCache 可选的模块缓存 + */ +export function printModuleBuildStart(moduleId: string, moduleCache?: Map) { + if (moduleId.includes('/src/') && !moduleId.includes('node_modules')) { + const relativePath = moduleId.split('/src/').pop() || '' + if (relativePath) { + printMessage('start', 'building ' + chalk.dim('src/' + relativePath)) + } + } +} + +/** + * 记录构建开始 + * @param message 可选的自定义消息 + */ +export function logStart(message = 'build started...') { + printMessage('start', message) +} + +/** + * 记录构建完成 + * @param stats 构建统计信息或构建时间(毫秒) + * @param message 可选的自定义消息前缀 + */ +export function logDone(stats: any | number, message = 'built') { + let timeInSeconds: string + + if (typeof stats === 'number') { + // 如果传入的是毫秒数 + timeInSeconds = (stats / 1000).toFixed(2) + } else { + // 如果传入的是stats对象 + const data = stats?.toJson({all: false, colors: false, assets: false, chunks: false, timings: true}) + timeInSeconds = (data.time / 1000).toFixed(2) + } + + printMessage('ready', `${message} in ${chalk.bold(timeInSeconds)} s`) } diff --git a/packages/cli/src/helper/compilerWatcher.ts b/packages/cli/src/helper/compilerWatcher.ts new file mode 100644 index 00000000..5b42b7c1 --- /dev/null +++ b/packages/cli/src/helper/compilerWatcher.ts @@ -0,0 +1,205 @@ +import type {Compiler} from '@rspack/core' +import chalk from 'chalk' +import path from 'path' +import type {DevServer} from '../server/connect/dev' +import {logDone, logStart} from './buildPrint' + +// 源文件过滤条件 +const SRC_FILE_REGEX = /\/src\// +const NODE_MODULES_REGEX = /node_modules/ + +/** + * 格式化文件路径,使其更易读 + */ +function formatFileList(files: string[], context: string): string[] { + return files.map(file => { + // 将绝对路径转换为相对于项目根目录的路径 + const relativePath = path.relative(context, file) + return chalk.dim(path.dirname(relativePath) + path.sep) + chalk.dim(path.basename(relativePath)) + }) +} + +export function setupCompilerWatcher(compiler: Compiler, devServer: DevServer) { + const HOOK_NAME = 'emp:compiler' + + // 用于跟踪当前构建周期中已处理的模块 + const processedModules = new Set() + + // 用于存储文件的最后修改时间 + const fileTimestamps = new Map() + + // 是否有文件被修改的标志 + let hasModifiedFiles = false + + // 用于存储懒加载的模块 + const lazyModules = new Set() + + // 编译状态 + let isCompiling = false + + // 项目根目录 + const context = compiler.options.context || process.cwd() + + /** + * 检测文件是否为源代码文件 + */ + const isSourceFile = (filePath: string): boolean => { + return SRC_FILE_REGEX.test(filePath) && !NODE_MODULES_REGEX.test(filePath) + } + + /** + * 获取变更的文件列表,避免重复处理同一个文件 + */ + const getChangedFiles = (compiler: any): {changed: Set; removed: Set} => { + const changed = new Set() + const removed = new Set() + + // 使用Rspack/Webpack 5的modifiedFiles和removedFiles API + if (compiler.modifiedFiles || compiler.removedFiles) { + // 处理修改的文件 + if (compiler.modifiedFiles) { + for (const file of compiler.modifiedFiles) { + // 只处理源代码文件 + if (isSourceFile(file)) { + // 检查文件是否已经在当前编译周期中处理过 + const lastProcessedTime = fileTimestamps.get(file) || 0 + const currentTime = Date.now() + + // 如果文件在短时间内被多次修改,只处理一次 + // 使用300ms作为防抖时间 + if (currentTime - lastProcessedTime > 300) { + changed.add(file) + fileTimestamps.set(file, currentTime) + } + } + } + } + + // 处理删除的文件 + if (compiler.removedFiles) { + for (const file of compiler.removedFiles) { + if (isSourceFile(file)) { + removed.add(file) + // 从时间戳记录中删除 + fileTimestamps.delete(file) + } + } + } + + return {changed, removed} + } + + // 兼容旧版本 + if (compiler.watchFileSystem?.watcher) { + const watcher = compiler.watchFileSystem.watcher + const mtimes = watcher.mtimes || {} + + for (const filePath of Object.keys(mtimes)) { + if (!isSourceFile(filePath)) continue + + const mtime = mtimes[filePath] + const oldTime = fileTimestamps.get(filePath) || 0 + const currentTime = Date.now() + + // 防抖处理 + if (oldTime < mtime && currentTime - oldTime > 300) { + changed.add(filePath) + fileTimestamps.set(filePath, currentTime) + } + } + } + + return {changed, removed} + } + + /** + * 打印构建日志 + */ + function printBuildLog(changedFiles: Set, removedFiles: Set) { + if (!devServer.isServerStarted) return + + const changedList = Array.from(changedFiles) + const removedList = Array.from(removedFiles) + const lazyList = Array.from(lazyModules) + + // 如果没有文件变更,不打印日志 + if (changedList.length === 0 && removedList.length === 0 && lazyList.length === 0) { + return + } + + let message = '' + + // 格式化并添加修改的文件 + if (changedList.length > 0) { + const formattedFiles = formatFileList(changedList, context) + message += `modified ${formattedFiles.join(', ')}` + } + + // 格式化并添加懒加载的模块 + if (lazyList.length > 0) { + const formattedLazy = formatFileList(lazyList, context) + message += `lazyLoaded ${formattedLazy.join(', ')}` + } + + // 格式化并添加删除的文件 + if (removedList.length > 0) { + const formattedRemoved = formatFileList(removedList, context) + message += `removed ${formattedRemoved.join(', ')}` + } + + // 打印构建开始信息 + logStart(message) + } + + // 监听编译开始,重置状态 + compiler.hooks.watchRun.tap(HOOK_NAME, (compiler: any) => { + // 避免重复触发 + if (isCompiling) return + isCompiling = true + + // 清空当前构建周期的处理记录 + processedModules.clear() + lazyModules.clear() + + // 获取变更的文件 + const {changed, removed} = getChangedFiles(compiler) + hasModifiedFiles = changed.size > 0 || removed.size > 0 + + // 打印构建日志 + if (hasModifiedFiles) { + printBuildLog(changed, removed) + } + + // 将变更的文件添加到处理列表 + changed.forEach(filePath => processedModules.add(filePath)) + }) + + // 监听构建完成 + compiler.hooks.done.tap(HOOK_NAME, stats => { + // 只有在服务器启动完成且有文件被修改时才处理 + if (!devServer.isServerStarted || !hasModifiedFiles) { + isCompiling = false + return + } + + // 确保每次构建只打印一次完成信息 + if (processedModules.size > 0 || lazyModules.size > 0) { + logDone(stats) + // 重置标志 + hasModifiedFiles = false + } + + // 重置编译状态 + isCompiling = false + }) + + return { + cleanup: () => { + processedModules.clear() + fileTimestamps.clear() + lazyModules.clear() + hasModifiedFiles = false + isCompiling = false + }, + } +} diff --git a/packages/cli/src/helper/logger.ts b/packages/cli/src/helper/logger.ts index fec6c52a..e1c470a8 100644 --- a/packages/cli/src/helper/logger.ts +++ b/packages/cli/src/helper/logger.ts @@ -2,11 +2,13 @@ import color from 'src/helper/color' export type LoggerType = 'debug' | 'info' | 'warn' | 'error' export {color} // +const isDev = process.env.ENV === 'dev' +// console.log('process.env.ENV', process.env.ENV) export class Logger { public brandName = '' public fullName = '' - public logLevel = 'debug' - public isLogTime = process.env.ENV === 'dev' + public logLevel = isDev ? 'debug' : 'info' + public isLogTime = isDev setup({brandName, logLevel, fullName}: any) { //` EMP v${store.empPkg.version} ` this.brandName = ` [${brandName}] ` diff --git a/packages/cli/src/script/base.ts b/packages/cli/src/script/base.ts index 0eacbb15..5f618d2c 100644 --- a/packages/cli/src/script/base.ts +++ b/packages/cli/src/script/base.ts @@ -1,23 +1,24 @@ import logger from 'src/helper/logger' import {clearConsole} from 'src/helper/utils' import store from 'src/store' +import {CliActionType, CliOptionsType} from 'src/types/env' // export class BaseScript { // 实现整体生命周期运转 - async setup(cliName: string, o: any) { - logger.time(`[${cliName}]Setup`) + async setup(cliAction?: CliActionType, cliOptions?: CliOptionsType) { + logger.time(`[${cliAction}]Setup`) //实例化 store - await store.setup(cliName as any, o) + await store.setup(cliAction, cliOptions) // 是否清除上一个日志 - if (store.debug.clearLog) { - clearConsole() - } - logger.title(`${cliName}`) - logger.time(`[${cliName}]Run`) + // if (store.debug.clearLog) { + // clearConsole() + // } + logger.title(`${cliAction}`) + logger.time(`[${cliAction}]Run`) await this.run() this.processExit() - logger.timeEnd(`[${cliName}]Run`) - logger.timeEnd(`[${cliName}]Setup`) + logger.timeEnd(`[${cliAction}]Run`) + logger.timeEnd(`[${cliAction}]Setup`) } async run() {} processExit() { diff --git a/packages/cli/src/script/dev.ts b/packages/cli/src/script/dev.ts index cba48d30..40902d98 100644 --- a/packages/cli/src/script/dev.ts +++ b/packages/cli/src/script/dev.ts @@ -1,5 +1,11 @@ import {type RspackOptions, rspack} from '@rspack/core' -import {timeDone} from 'src/helper/buildPrint' +import chalk from 'chalk' +import chokidar from 'chokidar' +import fs from 'fs' +import path from 'path' +import {logger} from 'src/helper' +import {printBuildDone, printBuildStart, timeDone} from 'src/helper/buildPrint' +import {setupCompilerWatcher} from 'src/helper/compilerWatcher' import {deepAssign} from 'src/helper/utils' import {BaseScript} from 'src/script/base' import {DevServer} from 'src/server' @@ -7,10 +13,12 @@ import store, {type GlobalStore} from 'src/store' const empDevServer = new DevServer() class DevScript extends BaseScript { + // 用于存储关闭时需要执行的清理函数 + private closeHooks: Array<() => void> = [] + get stats() { return { all: store.empConfig.debug.devShowAllLog, - // all: true, colors: true, assets: false, chunks: false, @@ -21,56 +29,144 @@ class DevScript extends BaseScript { warnings: true, } } + private async getRspackDevConfig() { const cf: RspackOptions = deepAssign(store.rsConfig, { stats: this.stats, devServer: { - open: false, //避免 打开多tab!!! + open: false, // 避免打开多tab setupExitSignals: true, port: store.server.port, }, }) const {devServer}: any = cf + + // 处理HTTPS配置 if (store.server.isHttps) { - /** - * 弃置options - */ if (!devServer.server || (devServer.server.type === 'https' && !devServer.server.options)) { const {key, cert} = await store.server.getcert() devServer.server = { type: 'https', - options: { - key, - cert, - }, + options: {key, cert}, } } } - // + + // 移除旧的https配置 if (Object.hasOwn(devServer, 'https')) { delete devServer.https } + return cf } - override async run() { - const {server} = store - let rspackConfig = await this.getRspackDevConfig() - rspackConfig = await empDevServer.beforeCompiler(rspackConfig) - // - const compiler = rspack(rspackConfig) - await store.empConfig.lifeCycle.beforeDevServe() - server.startOpen() - await empDevServer.setup(compiler, rspackConfig, store as GlobalStore, async (o: any) => { - this.showTimeDone(o) - await store.empConfig.lifeCycle.afterDevServe() - }) - if (store.debug.showPerformance) { - compiler.hooks.afterDone.tap('done', this.showTimeDone) + + /** + * 启动或重启开发服务器 + * @param isRestart 是否为重启操作 + */ + private async startDevServer(isRestart = false) { + try { + const {server} = store + let rspackConfig = await this.getRspackDevConfig() + rspackConfig = await empDevServer.beforeCompiler(rspackConfig) + + const compiler = rspack(rspackConfig) + await store.empConfig.lifeCycle.beforeDevServe() + server.startOpen() + // 显示构建开始提示 + printBuildStart() + + await empDevServer.setup(compiler, rspackConfig, store as GlobalStore, async (o: any) => { + empDevServer.isServerStarted = true + printBuildDone(o) + await store.empConfig.lifeCycle.afterDevServe() + }) + // compiler.hooks.afterDone.tap('done', stats => { + // this.lastBuildTime = printBuildDone(stats, this.lastBuildTime) + // }) + // 设置编译器监听器,监听文件修改后的全流程 + const watcher = setupCompilerWatcher(compiler, empDevServer) + + // 添加到关闭钩子中,确保资源被正确清理 + this.closeHooks.push(() => watcher.cleanup()) + + if (isRestart) { + logger.debug(`[EMP] Dev server restarted successfully`) + } + } catch (error) { + logger.error(`[EMP] Failed to ${isRestart ? 'restart' : 'start'} dev server:`, error) } } - private showTimeDone = (s: any) => { - const d = s?.toJson({all: false, colors: false, assets: false, chunks: false, timings: true}) - timeDone(d.time) + + private watchConfigFile() { + const configPath = path.resolve(process.cwd(), 'emp.config.ts') + if (!fs.existsSync(configPath)) return + + logger.debug(`[EMP] Watching for changes in emp.config.ts...`) + let previousContent = fs.readFileSync(configPath, 'utf-8') + + chokidar + .watch(configPath, { + ignored: /(^|[/\\])\../, // ignore dotfiles + persistent: true, + }) + .on('change', async filePath => { + // 检查文件内容是否有实际变化(避免空保存触发重启) + const currentContent = fs.readFileSync(configPath, 'utf-8') + if (previousContent === currentContent) { + logger.debug(`[EMP] 配置文件无实际变更(空保存),跳过重启`) + return + } + + previousContent = currentContent + logger.debug(`[EMP] Config file changed: ${filePath}`) + + // 清除require缓存,确保重新加载配置文件 + Object.keys(require.cache).forEach(id => { + if (id.includes('emp.config')) { + delete require.cache[id] + } + }) + + // 重启服务 + logger.debug(`[EMP] 配置文件已变更,正在重启服务...`) + // 执行所有清理钩子 + this.executeCloseHooks() + await empDevServer.close() + await store.setup() + logger.debug('[EMP] 重启服务完成,新配置如下:', store.empConfig.debug) + await this.startDevServer(true) // 以重启模式启动服务器 + }) + } + + override async run() { + // 首次启动开发服务器 + await this.startDevServer(false) + + // 启动配置文件监听 + this.watchConfigFile() + } + + // 记录上次构建完成时间,避免重复输出 + private lastBuildTime = 0 + + /** + * 执行所有关闭钩子函数 + */ + private executeCloseHooks() { + if (this.closeHooks.length > 0) { + logger.debug(`[EMP] 执行 ${this.closeHooks.length} 个清理钩子...`) + for (const hook of this.closeHooks) { + try { + hook() + } catch (error) { + logger.error('[EMP] 执行清理钩子时出错:', error) + } + } + // 清空钩子列表 + this.closeHooks = [] + } } } + export default new DevScript() diff --git a/packages/cli/src/script/serve.ts b/packages/cli/src/script/serve.ts index f07c29f5..00b11688 100644 --- a/packages/cli/src/script/serve.ts +++ b/packages/cli/src/script/serve.ts @@ -13,7 +13,7 @@ export class ServeScript extends BaseScript { } onReady = async () => { store.server.startOpen() - timeDone(Date.now() - timing) + timeDone(Date.now() - timing, 'Server Started') await store.empConfig.lifeCycle.afterServe() } } diff --git a/packages/cli/src/server/connect/dev.ts b/packages/cli/src/server/connect/dev.ts index c9631a5e..16d29c77 100644 --- a/packages/cli/src/server/connect/dev.ts +++ b/packages/cli/src/server/connect/dev.ts @@ -1,17 +1,23 @@ // import RspackDevServer from 'webpack-dev-server' import {RspackDevServer} from '@rspack/dev-server' import connect from 'connect' +import logger from 'src/helper/logger' import type {Compiler, GlobalStore, RspackOptions} from 'src/index' import type {DevServerType} from 'src/server/types' export class DevServer implements DevServerType { + private server: any = null + public isServerStarted = false + async setup(compiler: Compiler, rspackConfig: RspackOptions, store: GlobalStore, onReady: any = () => {}) { - if (!rspackConfig.devServer) return console.warn('rspackConfig.devServer need!') + if (!rspackConfig.devServer) return logger.warn('rspackConfig.devServer need!') const app = new RspackDevServer(rspackConfig.devServer, compiler) await app.start() app.middleware?.waitUntilValid(onReady) + this.server = app return app } + async beforeCompiler(rspackConfig: any) { rspackConfig.devServer.app = () => connect() if (rspackConfig.devServer.server && rspackConfig.devServer.server.type === 'https') { @@ -20,4 +26,20 @@ export class DevServer implements DevServerType { // console.log('rspackConfig', rspackConfig.devServer) return rspackConfig } + + async close() { + logger.debug('close dev server') + if (this.server) { + try { + await this.server.stop() + this.isServerStarted = false + this.server = null + return true + } catch (error) { + logger.error('Error closing dev server:', error) + return false + } + } + return true + } } diff --git a/packages/cli/src/server/index.ts b/packages/cli/src/server/index.ts index f49f579d..4a3798a4 100644 --- a/packages/cli/src/server/index.ts +++ b/packages/cli/src/server/index.ts @@ -1,5 +1,6 @@ -export {DevServer} from './connect/dev' -export {ProdServer} from './connect/prod' +import {DevServer} from './connect/dev' +import {ProdServer} from './connect/prod' +export {DevServer, ProdServer} // export {ProdServer} from './hono/prod' // export {DevServer} from './hono/dev' diff --git a/packages/cli/src/store/index.ts b/packages/cli/src/store/index.ts index e35e898b..63a4fcef 100644 --- a/packages/cli/src/store/index.ts +++ b/packages/cli/src/store/index.ts @@ -5,13 +5,13 @@ import type {Configuration as RsConfig, RspackOptions} from '@rspack/core' import {rspack} from '@rspack/core' import {getEmpConfigPath, getTsConfig} from 'src/helper/loadConfig' import logger from 'src/helper/logger' -import {deepAssign, getLanIp, vCompare} from 'src/helper/utils' +import {clearConsole, deepAssign, getLanIp, vCompare} from 'src/helper/utils' import {Chain} from 'src/store/chain' import empConfig, {type EmpConfig} from 'src/store/empConfig' import rspackStore from 'src/store/rspack' import {StoreServer} from 'src/store/server' import type {EmpOptions, InjectTagsType, StoreRootPaths} from 'src/types/config' -import type {CliActionType, EMPModeType} from 'src/types/env' +import type {CliActionType, CliOptionsType, EMPModeType} from 'src/types/env' import {chainName} from './chain' import {HtmlEmpInjectPlugin} from './rspack/builtInPlugin' export class GlobalStore { @@ -27,6 +27,7 @@ export class GlobalStore { * 项目pkg信息 */ public pkg: any = {dependencies: {}, devDependencies: {}, version: '0.0.0', name: ''} + /** * 项目根目录绝对路径 * @default process.cwd() @@ -94,7 +95,6 @@ export class GlobalStore { /** * 项目配置 */ - public cliOptions: any public chain!: Chain public rsConfig!: RsConfig public empOptions: EmpOptions = {} @@ -103,13 +103,16 @@ export class GlobalStore { public entries: {[chunkName: string]: RspackOptions['entry']} = {} // 获取所有入口名称 public debug!: EmpConfig['debug'] public cliAction!: CliActionType + public cliOptions: CliOptionsType // 获取 emp-config路径 以及 tsconfig 路径 public rootPaths: StoreRootPaths = { empConfig: undefined, tsConfig: undefined, pkg: undefined, } - public async setup(cliAction: CliActionType, cliOptions: any) { + public async setup(cliAction?: CliActionType, cliOptions?: any) { + this.cliAction = cliAction ? cliAction : this.cliAction + this.cliOptions = cliOptions ? cliOptions : this.cliOptions logger.time('[store]Setup') // const [epath, tpath] = await Promise.all([getEmpConfigPath(), getTsConfig()]) @@ -119,7 +122,7 @@ export class GlobalStore { // console.log('this.rootPaths', this.rootPaths) // // 初始化 store 基础变量 - await this.initVars(cliAction, cliOptions) + await this.initVars(this.cliAction, this.cliOptions) // 设置 empConfig this.empConfig = empConfig await this.empConfig.setup(this) @@ -138,6 +141,10 @@ export class GlobalStore { await this.server.setupOnStore() // logger.timeEnd('[store]Setup') + // 是否清除上一个日志 + if (this.debug.clearLog) { + clearConsole() + } } /** * 初始化 基础变量 diff --git a/packages/cli/src/store/rspack/plugin.ts b/packages/cli/src/store/rspack/plugin.ts index 3e8e45ad..c3de9762 100644 --- a/packages/cli/src/store/rspack/plugin.ts +++ b/packages/cli/src/store/rspack/plugin.ts @@ -77,7 +77,8 @@ class RspackPlugin { ]) } async progress() { - if (!this.store.empConfig.debug.progress) return + // if (!this.store.empConfig.debug.progress) return + if (this.store.mode === 'development') return // let op: any = {} if (this.store.isOldRspack) { diff --git a/packages/cli/src/types/env.ts b/packages/cli/src/types/env.ts index 200be94b..6d3b7ab4 100644 --- a/packages/cli/src/types/env.ts +++ b/packages/cli/src/types/env.ts @@ -1,2 +1,3 @@ export type EMPModeType = 'development' | 'production' export type CliActionType = 'dev' | 'build' | 'serve' +export type CliOptionsType = any diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bd1b467..69164db6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: workspace:^ version: link:packages/biome-config '@rslib/core': - specifier: ^0.13.2 - version: 0.13.2(typescript@5.9.2) + specifier: ^0.14.0 + version: 0.14.0(typescript@5.9.2) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -195,7 +195,7 @@ importers: version: link:../emp-chain '@rsdoctor/rspack-plugin': specifier: 1.2.3 - version: 1.2.3(@rsbuild/core@1.5.4)(@rspack/core@1.5.5)(webpack@5.101.3) + version: 1.2.3(@rsbuild/core@1.5.12)(@rspack/core@1.5.5)(webpack@5.101.3) '@rspack/core': specifier: 1.5.5 version: 1.5.5(@swc/helpers@0.5.17) @@ -308,6 +308,9 @@ importers: '@types/webpack-sources': specifier: ^3.2.2 version: 3.2.3 + chokidar: + specifier: ^4.0.3 + version: 4.0.3 vue: specifier: ^3.5.21 version: 3.5.21(typescript@5.9.2) @@ -5392,18 +5395,18 @@ packages: jiti: 2.5.1 dev: false - /@rsbuild/core@1.5.4: - resolution: {integrity: sha512-iRzq4hEXawL4MVkPKhfGMJxS45XIfwkweAZXEHeaboq6vxbpg0dLRgkbaIuuFyF9hCwI0y3ant/xVXOqDghJNw==} + /@rsbuild/core@1.5.12: + resolution: {integrity: sha512-DpinE1If6WRTwQYqH+PRtJo3zshkDYHfIcWq4lTtfsPfPLrXshmRXBam3BS1RRu4v2gGT+LCNiUefftsmcmL0A==} engines: {node: '>=18.12.0'} hasBin: true dependencies: - '@rspack/core': 1.5.2(@swc/helpers@0.5.17) + '@rspack/core': 1.5.7(@swc/helpers@0.5.17) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 core-js: 3.45.1 - jiti: 2.5.1 + jiti: 2.6.0 - /@rsbuild/plugin-check-syntax@1.3.0(@rsbuild/core@1.5.4): + /@rsbuild/plugin-check-syntax@1.3.0(@rsbuild/core@1.5.12): resolution: {integrity: sha512-lHrd6hToPFVOGWr0U/Ox7pudHWdhPSFsr2riWpjNRlUuwiXdU2SYMROaVUCrLJvYFzJyEMsFOi1w59rBQCG2HQ==} peerDependencies: '@rsbuild/core': 1.x @@ -5411,7 +5414,7 @@ packages: '@rsbuild/core': optional: true dependencies: - '@rsbuild/core': 1.5.4 + '@rsbuild/core': 1.5.12 acorn: 8.15.0 browserslist-to-es-version: 1.1.1 htmlparser2: 10.0.0 @@ -5458,10 +5461,10 @@ packages: resolution: {integrity: sha512-KzfRONtUFMOhgyd9Kur9C/eqh+qPE0UDQEwp/uCMIQHwmompGgChuGniVENd2mGgkZX4MDHubFSvjoeI7j4UBg==} dev: false - /@rsdoctor/core@1.2.3(@rsbuild/core@1.5.4)(@rspack/core@1.5.5)(webpack@5.101.3): + /@rsdoctor/core@1.2.3(@rsbuild/core@1.5.12)(@rspack/core@1.5.5)(webpack@5.101.3): resolution: {integrity: sha512-7o+SoN0JVwvxi0LSToA9G5PvSDag9ri0pQ/krlsJdkg2aVCRSR1xVjS8pzaKR9F+Q5Mnj6RixYOhIkWqWoMWFw==} dependencies: - '@rsbuild/plugin-check-syntax': 1.3.0(@rsbuild/core@1.5.4) + '@rsbuild/plugin-check-syntax': 1.3.0(@rsbuild/core@1.5.12) '@rsdoctor/graph': 1.2.3(@rspack/core@1.5.5)(webpack@5.101.3) '@rsdoctor/sdk': 1.2.3(@rspack/core@1.5.5)(webpack@5.101.3) '@rsdoctor/types': 1.2.3(@rspack/core@1.5.5)(webpack@5.101.3) @@ -5498,7 +5501,7 @@ packages: - webpack dev: false - /@rsdoctor/rspack-plugin@1.2.3(@rsbuild/core@1.5.4)(@rspack/core@1.5.5)(webpack@5.101.3): + /@rsdoctor/rspack-plugin@1.2.3(@rsbuild/core@1.5.12)(@rspack/core@1.5.5)(webpack@5.101.3): resolution: {integrity: sha512-IW0dyCmEC9Sxz7pHpUPDIjUTpFdxPocIGrcw04J5CgD5hYbyDrJ6ubDRAY4W6jm4CGvr0524s4xfW2pfsKY1Ew==} peerDependencies: '@rspack/core': '*' @@ -5506,7 +5509,7 @@ packages: '@rspack/core': optional: true dependencies: - '@rsdoctor/core': 1.2.3(@rsbuild/core@1.5.4)(@rspack/core@1.5.5)(webpack@5.101.3) + '@rsdoctor/core': 1.2.3(@rsbuild/core@1.5.12)(@rspack/core@1.5.5)(webpack@5.101.3) '@rsdoctor/graph': 1.2.3(@rspack/core@1.5.5)(webpack@5.101.3) '@rsdoctor/sdk': 1.2.3(@rspack/core@1.5.5)(webpack@5.101.3) '@rsdoctor/types': 1.2.3(@rspack/core@1.5.5)(webpack@5.101.3) @@ -5593,8 +5596,8 @@ packages: - webpack dev: false - /@rslib/core@0.13.2(typescript@5.9.2): - resolution: {integrity: sha512-Npb27X+kjh4fJoCVMvemfgS1F/gBW4VwHndYlQSmP5pdtqbfOLEj66YNIk0thu/1Z4dh0m2KppM7O3cFiJpqMQ==} + /@rslib/core@0.14.0(typescript@5.9.2): + resolution: {integrity: sha512-N8FP813mteNeWVo0HrwOXfy0gaz222chu3ZMEaqR1AKxH7HD3i3rRvm8sQ7yQXQ27wyLHl1/Fttxa9MG/dnHeA==} engines: {node: '>=18.12.0'} hasBin: true peerDependencies: @@ -5606,9 +5609,8 @@ packages: typescript: optional: true dependencies: - '@rsbuild/core': 1.5.4 - rsbuild-plugin-dts: 0.13.2(@rsbuild/core@1.5.4)(typescript@5.9.2) - tinyglobby: 0.2.15 + '@rsbuild/core': 1.5.12 + rsbuild-plugin-dts: 0.14.0(@rsbuild/core@1.5.12)(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - '@typescript/native-preview' @@ -5622,19 +5624,19 @@ packages: dev: false optional: true - /@rspack/binding-darwin-arm64@1.5.2: - resolution: {integrity: sha512-aO76T6VQvAFt1LJNRA5aPOJ+szeTLlzC5wubsnxgWWjG53goP+Te35kFjDIDe+9VhKE/XqRId6iNAymaEsN+Uw==} + /@rspack/binding-darwin-arm64@1.5.5: + resolution: {integrity: sha512-Kg3ywEZHLX+aROfTQ5tMOv+Ud+8b4jk8ruUgsi0W8oBkEkR5xBdhFa9vcf6pzy+gfoLCnEI68U9i8ttm+G0csA==} cpu: [arm64] os: [darwin] requiresBuild: true + dev: false optional: true - /@rspack/binding-darwin-arm64@1.5.5: - resolution: {integrity: sha512-Kg3ywEZHLX+aROfTQ5tMOv+Ud+8b4jk8ruUgsi0W8oBkEkR5xBdhFa9vcf6pzy+gfoLCnEI68U9i8ttm+G0csA==} + /@rspack/binding-darwin-arm64@1.5.7: + resolution: {integrity: sha512-prQ/vgJxOPdlYiR4gVeOEKofTCEOu70JQIQApqFnw8lKM7rd9ag8ogDNqmc2L/GGXGHLAqds28oeKXRlzYf7+Q==} cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true /@rspack/binding-darwin-x64@1.3.12: @@ -5645,19 +5647,19 @@ packages: dev: false optional: true - /@rspack/binding-darwin-x64@1.5.2: - resolution: {integrity: sha512-XNSmUOwdGs2PEdCKTFCC0/vu/7U9nMhAlbHJKlmdt0V4iPvFyaNWxkNdFqzLc05jlJOfgDdwbwRb91y9IcIIFQ==} + /@rspack/binding-darwin-x64@1.5.5: + resolution: {integrity: sha512-uoGTYnlYW8m47yiDCKvXOehhAOH12wlePJq4sbUbBoHmG07vbDw7fUqnvy2k8319NTVEpMJWGoKyisgI09/uMQ==} cpu: [x64] os: [darwin] requiresBuild: true + dev: false optional: true - /@rspack/binding-darwin-x64@1.5.5: - resolution: {integrity: sha512-uoGTYnlYW8m47yiDCKvXOehhAOH12wlePJq4sbUbBoHmG07vbDw7fUqnvy2k8319NTVEpMJWGoKyisgI09/uMQ==} + /@rspack/binding-darwin-x64@1.5.7: + resolution: {integrity: sha512-FPqiWSbEEerqfJrGnYe68svvl6NyuQFAb3qqFe/Q0MqFhBYmAZwa0R2/ylugCdgFLZxmkFuWqpDgItpvJb/E3Q==} cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true /@rspack/binding-linux-arm64-gnu@1.3.12: @@ -5668,19 +5670,19 @@ packages: dev: false optional: true - /@rspack/binding-linux-arm64-gnu@1.5.2: - resolution: {integrity: sha512-rNxRfgC5khlrhyEP6y93+45uQ4TI7CdtWqh5PKsaR6lPepG1rH4L8VE+etejSdhzXH6wQ76Rw4wzb96Hx+5vuQ==} + /@rspack/binding-linux-arm64-gnu@1.5.5: + resolution: {integrity: sha512-KgVN3TeUJ3iNwwOX3JGY4arvoLHX94eItJ4TeOSyetRiSJUrQI0evP16i5kIh+n+p7mVnXmfUS944Gl+uNsJmg==} cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true - /@rspack/binding-linux-arm64-gnu@1.5.5: - resolution: {integrity: sha512-KgVN3TeUJ3iNwwOX3JGY4arvoLHX94eItJ4TeOSyetRiSJUrQI0evP16i5kIh+n+p7mVnXmfUS944Gl+uNsJmg==} + /@rspack/binding-linux-arm64-gnu@1.5.7: + resolution: {integrity: sha512-fwy+NY+0CHrZqqzDrjPBlTuK53W4dG5EEg/QQFAE7KVM+okRqPk8tg45bJ5628rCNLe13GDmPIE107LmgspNqA==} cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true /@rspack/binding-linux-arm64-musl@1.3.12: @@ -5691,19 +5693,19 @@ packages: dev: false optional: true - /@rspack/binding-linux-arm64-musl@1.5.2: - resolution: {integrity: sha512-kTFX+KsGgArWC5q+jJWz0K/8rfVqZOn1ojv1xpCCcz/ogWRC/qhDGSOva6Wandh157BiR93Vfoe1gMvgjpLe5g==} + /@rspack/binding-linux-arm64-musl@1.5.5: + resolution: {integrity: sha512-1gKthlCQinXtWar6Hl9Il6BQ/NgYBH0NVuUsjjf85ejD/cTPQENKyIpGvVa1rSIHSfnG/XujUbruHAeY9mEHCA==} cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true - /@rspack/binding-linux-arm64-musl@1.5.5: - resolution: {integrity: sha512-1gKthlCQinXtWar6Hl9Il6BQ/NgYBH0NVuUsjjf85ejD/cTPQENKyIpGvVa1rSIHSfnG/XujUbruHAeY9mEHCA==} + /@rspack/binding-linux-arm64-musl@1.5.7: + resolution: {integrity: sha512-576u/0F4ZUzpHckFme4vQ0sSxjE+B/gVP4tNJ+P6bJaclXLFXV4icbjTUQwOIgmA1EQz/JFeKGGJZ4p6mowpBQ==} cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true /@rspack/binding-linux-x64-gnu@1.3.12: @@ -5714,19 +5716,19 @@ packages: dev: false optional: true - /@rspack/binding-linux-x64-gnu@1.5.2: - resolution: {integrity: sha512-Lh/6WZGq30lDV6RteQQu7Phw0RH2Z1f4kGR+MsplJ6X4JpnziDow+9oxKdu6FvFHWxHByncpveVeInusQPmL7Q==} + /@rspack/binding-linux-x64-gnu@1.5.5: + resolution: {integrity: sha512-haPFg4M9GwpSI5g9BQhKUNdzCKDvFexIUkLiAHBjFU9iWQTEcI9VfYPixestOIwzUv7E34rHM+jAsmRGWdgmXw==} cpu: [x64] os: [linux] requiresBuild: true + dev: false optional: true - /@rspack/binding-linux-x64-gnu@1.5.5: - resolution: {integrity: sha512-haPFg4M9GwpSI5g9BQhKUNdzCKDvFexIUkLiAHBjFU9iWQTEcI9VfYPixestOIwzUv7E34rHM+jAsmRGWdgmXw==} + /@rspack/binding-linux-x64-gnu@1.5.7: + resolution: {integrity: sha512-brSHywXjjeuWkv0ywgxS4VgDgquarEb4XGr+eXhOaPcc8x2rNefyc4hErplrI7+oxPXVuGK5VE4ZH5bj3Yknvg==} cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true /@rspack/binding-linux-x64-musl@1.3.12: @@ -5737,36 +5739,36 @@ packages: dev: false optional: true - /@rspack/binding-linux-x64-musl@1.5.2: - resolution: {integrity: sha512-CsLC/SIOIFs6CBmusSAF0FECB62+J36alMdwl7j6TgN6nX3UQQapnL1aVWuQaxU6un/1Vpim0V/EZbUYIdJQ4g==} + /@rspack/binding-linux-x64-musl@1.5.5: + resolution: {integrity: sha512-oUny56JEkCZvIu4n8/P7IPLPNtJnL89EDhxHINH87XLBY3OOgo8JHELR11Zj9SFWiGNsRcLqi+Q78tWa0ligBQ==} cpu: [x64] os: [linux] requiresBuild: true + dev: false optional: true - /@rspack/binding-linux-x64-musl@1.5.5: - resolution: {integrity: sha512-oUny56JEkCZvIu4n8/P7IPLPNtJnL89EDhxHINH87XLBY3OOgo8JHELR11Zj9SFWiGNsRcLqi+Q78tWa0ligBQ==} + /@rspack/binding-linux-x64-musl@1.5.7: + resolution: {integrity: sha512-HcS0DzbLlWCwVfYcWMbTgILh4GELD6m4CZoFEhIr4fJCJi0p8NgLYycy1QtDhaUjs8TKalmyMwHrJwGnD141JA==} cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true - /@rspack/binding-wasm32-wasi@1.5.2: - resolution: {integrity: sha512-cuVbGr1b4q0Z6AtEraI3becZraPMMgZtZPRaIsVLeDXCmxup/maSAR3T6UaGf4Q2SNcFfjw4neGz5UJxPK8uvA==} + /@rspack/binding-wasm32-wasi@1.5.5: + resolution: {integrity: sha512-tRgxBgIXaBKBH/0KlwvyqbIMqQrg8jKOyFOEQseEE7Oqs2M9KkJ7Vp5QN11u3NvZ9nz5GbZxmVGBMkdj9Gth1w==} cpu: [wasm32] requiresBuild: true dependencies: '@napi-rs/wasm-runtime': 1.0.5 + dev: false optional: true - /@rspack/binding-wasm32-wasi@1.5.5: - resolution: {integrity: sha512-tRgxBgIXaBKBH/0KlwvyqbIMqQrg8jKOyFOEQseEE7Oqs2M9KkJ7Vp5QN11u3NvZ9nz5GbZxmVGBMkdj9Gth1w==} + /@rspack/binding-wasm32-wasi@1.5.7: + resolution: {integrity: sha512-uTRUEuK+TVlvUBSWXVoxD+6JTN+rvtRqVlO+A7I7VnOY7p9Rpvk1sXcHtEwg/XuDCq4DALnvlzbFLh7G3zILvw==} cpu: [wasm32] requiresBuild: true dependencies: '@napi-rs/wasm-runtime': 1.0.5 - dev: false optional: true /@rspack/binding-win32-arm64-msvc@1.3.12: @@ -5777,19 +5779,19 @@ packages: dev: false optional: true - /@rspack/binding-win32-arm64-msvc@1.5.2: - resolution: {integrity: sha512-4vJQdzRTSuvmvL3vrOPuiA7f9v9frNc2RFWDxqg+GYt0YAjDStssp+lkVbRYyXnTYVJkARSuO6N+BOiI+kLdsQ==} + /@rspack/binding-win32-arm64-msvc@1.5.5: + resolution: {integrity: sha512-wGWd2yluoFdQgtkIbny6FoHnzahTk+o9RzrptjeS1u/NV1lKrWzmWhwZojMGOUqPiaukZKaziOEo7gpRn2XbEQ==} cpu: [arm64] os: [win32] requiresBuild: true + dev: false optional: true - /@rspack/binding-win32-arm64-msvc@1.5.5: - resolution: {integrity: sha512-wGWd2yluoFdQgtkIbny6FoHnzahTk+o9RzrptjeS1u/NV1lKrWzmWhwZojMGOUqPiaukZKaziOEo7gpRn2XbEQ==} + /@rspack/binding-win32-arm64-msvc@1.5.7: + resolution: {integrity: sha512-dFHrXRUmMTkxEn/Uw2RLbIckKfi0Zmn2NnEXwedWdyRgZW4Vhk7+VBxM22O/CHZmAGt12Ol25yTuVv58ANLEKA==} cpu: [arm64] os: [win32] requiresBuild: true - dev: false optional: true /@rspack/binding-win32-ia32-msvc@1.3.12: @@ -5800,19 +5802,19 @@ packages: dev: false optional: true - /@rspack/binding-win32-ia32-msvc@1.5.2: - resolution: {integrity: sha512-zPbu3lx/NrNxdjZzTIjwD0mILUOpfhuPdUdXIFiOAO8RiWSeQpYOvyI061s/+bNOmr4A+Z0uM0dEoOClfkhUFg==} + /@rspack/binding-win32-ia32-msvc@1.5.5: + resolution: {integrity: sha512-Ikml8AQkzjPCG24vTO4pG2bpJ8vp93jVEgo9X9uYjO2vQbIp5QSOmeZOTM7tXCf8AfTfHEF/yAdE/pR/+tXXGQ==} cpu: [ia32] os: [win32] requiresBuild: true + dev: false optional: true - /@rspack/binding-win32-ia32-msvc@1.5.5: - resolution: {integrity: sha512-Ikml8AQkzjPCG24vTO4pG2bpJ8vp93jVEgo9X9uYjO2vQbIp5QSOmeZOTM7tXCf8AfTfHEF/yAdE/pR/+tXXGQ==} + /@rspack/binding-win32-ia32-msvc@1.5.7: + resolution: {integrity: sha512-PNtnOIUzE9p/Fbl6l/1Zs7bhn8ccTlaHTgZgQq0sO/QxjLlbU0WPjRl+YLo27cAningSOAbANuYlN8vAcuimrw==} cpu: [ia32] os: [win32] requiresBuild: true - dev: false optional: true /@rspack/binding-win32-x64-msvc@1.3.12: @@ -5823,19 +5825,19 @@ packages: dev: false optional: true - /@rspack/binding-win32-x64-msvc@1.5.2: - resolution: {integrity: sha512-duLNUTshX38xhC10/W9tpkPca7rOifP2begZjdb1ikw7C4AI0I7VnBnYt8qPSxGISoclmhOBxU/LuAhS8jMMlg==} + /@rspack/binding-win32-x64-msvc@1.5.5: + resolution: {integrity: sha512-m2059ms0i/GIQGWTlZ5GI6SWpuMFAPMsWlhXLk2LZRIydhi+N/YPkmc33lFRTlDA3QpKDCvowvCvIIA7g6WSlg==} cpu: [x64] os: [win32] requiresBuild: true + dev: false optional: true - /@rspack/binding-win32-x64-msvc@1.5.5: - resolution: {integrity: sha512-m2059ms0i/GIQGWTlZ5GI6SWpuMFAPMsWlhXLk2LZRIydhi+N/YPkmc33lFRTlDA3QpKDCvowvCvIIA7g6WSlg==} + /@rspack/binding-win32-x64-msvc@1.5.7: + resolution: {integrity: sha512-22gTaYkwaIUvyXRxf1RVnFTJPqF2hD1pgAQNBIz7kYybe6vvSZ6KInW4WyG4vjYKrJg/cbS4QvtlLn0lYXrdIw==} cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true /@rspack/binding@1.3.12: @@ -5852,20 +5854,6 @@ packages: '@rspack/binding-win32-x64-msvc': 1.3.12 dev: false - /@rspack/binding@1.5.2: - resolution: {integrity: sha512-NKiBcsxmAzFDYRnK2ZHWbTtDFVT5/704eK4OfpgsDXPMkaMnBKijMKNgP5pbe18X4rUlz+8HnGm4+Xllo9EESw==} - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.5.2 - '@rspack/binding-darwin-x64': 1.5.2 - '@rspack/binding-linux-arm64-gnu': 1.5.2 - '@rspack/binding-linux-arm64-musl': 1.5.2 - '@rspack/binding-linux-x64-gnu': 1.5.2 - '@rspack/binding-linux-x64-musl': 1.5.2 - '@rspack/binding-wasm32-wasi': 1.5.2 - '@rspack/binding-win32-arm64-msvc': 1.5.2 - '@rspack/binding-win32-ia32-msvc': 1.5.2 - '@rspack/binding-win32-x64-msvc': 1.5.2 - /@rspack/binding@1.5.5: resolution: {integrity: sha512-JkB943uBU0lABnKG/jdO+gg3/eeO9CEQMR/1dL6jSU9GTxaNf3XIVc05RhRC7qoVsiXuhSMMFxWyV0hyHxp2bA==} optionalDependencies: @@ -5881,6 +5869,20 @@ packages: '@rspack/binding-win32-x64-msvc': 1.5.5 dev: false + /@rspack/binding@1.5.7: + resolution: {integrity: sha512-/fFrf4Yu8Tc0yXBw33g2++turdld1MDphLiLg05bx92fOVI1MafocwPvm35e3y1z7CtlQJ2Bmvzhi6APJShKxg==} + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.5.7 + '@rspack/binding-darwin-x64': 1.5.7 + '@rspack/binding-linux-arm64-gnu': 1.5.7 + '@rspack/binding-linux-arm64-musl': 1.5.7 + '@rspack/binding-linux-x64-gnu': 1.5.7 + '@rspack/binding-linux-x64-musl': 1.5.7 + '@rspack/binding-wasm32-wasi': 1.5.7 + '@rspack/binding-win32-arm64-msvc': 1.5.7 + '@rspack/binding-win32-ia32-msvc': 1.5.7 + '@rspack/binding-win32-x64-msvc': 1.5.7 + /@rspack/core@1.3.12(@swc/helpers@0.5.17): resolution: {integrity: sha512-mAPmV4LPPRgxpouUrGmAE4kpF1NEWJGyM5coebsjK/zaCMSjw3mkdxiU2b5cO44oIi0Ifv5iGkvwbdrZOvMyFA==} engines: {node: '>=16.0.0'} @@ -5897,8 +5899,8 @@ packages: caniuse-lite: 1.0.30001736 dev: false - /@rspack/core@1.5.2(@swc/helpers@0.5.17): - resolution: {integrity: sha512-ifjHqLczC81d1xjXPXCzxTFKNOFsEzuuLN44cMnyzQ/GWi4B48fyX7JHndWE7Lxd54cW1O9Ik7AdBN3Gq891EA==} + /@rspack/core@1.5.5(@swc/helpers@0.5.17): + resolution: {integrity: sha512-AOIuMktK6X/xHAjJ/0QJ2kbSkILXj641GCPE+EOfWO27ODA8fHPArKbyz5AVGVePV3aUfEo2VFcsNzP67VBEPA==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -5907,12 +5909,13 @@ packages: optional: true dependencies: '@module-federation/runtime-tools': 0.18.0 - '@rspack/binding': 1.5.2 + '@rspack/binding': 1.5.5 '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 + dev: false - /@rspack/core@1.5.5(@swc/helpers@0.5.17): - resolution: {integrity: sha512-AOIuMktK6X/xHAjJ/0QJ2kbSkILXj641GCPE+EOfWO27ODA8fHPArKbyz5AVGVePV3aUfEo2VFcsNzP67VBEPA==} + /@rspack/core@1.5.7(@swc/helpers@0.5.17): + resolution: {integrity: sha512-57ey3wafK/g+B9zLdCiIrX3eTK8rFEM3yvxBUb2ro3ZtAaCGm4y7xERcXZJNn4D01pjzzCJ/u1ezpQmsZYLP7A==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -5921,10 +5924,9 @@ packages: optional: true dependencies: '@module-federation/runtime-tools': 0.18.0 - '@rspack/binding': 1.5.5 + '@rspack/binding': 1.5.7 '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.17 - dev: false /@rspack/dev-server@1.1.4(@rspack/core@1.5.5)(webpack@5.101.3): resolution: {integrity: sha512-kGHYX2jYf3ZiHwVl0aUEPBOBEIG1aWleCDCAi+Jg32KUu3qr/zDUpCEd0wPuHfLEgk0X0xAEYCS6JMO7nBStNQ==} @@ -13301,6 +13303,11 @@ packages: /jiti@2.5.1: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true + dev: false + + /jiti@2.6.0: + resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} + hasBin: true /joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} @@ -13388,6 +13395,7 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: false /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -13876,6 +13884,7 @@ packages: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + dev: false /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -17642,8 +17651,8 @@ packages: fsevents: 2.3.3 dev: true - /rsbuild-plugin-dts@0.13.2(@rsbuild/core@1.5.4)(typescript@5.9.2): - resolution: {integrity: sha512-Tw88Jl6eqhUcI9JLFXGCaw4Oiqe1IfD7rbLWvV9OPJwsRdV129WJ4ccnI0x7tDpnLDV0xhW/+b/9wGyK28jSgg==} + /rsbuild-plugin-dts@0.14.0(@rsbuild/core@1.5.12)(typescript@5.9.2): + resolution: {integrity: sha512-PHnixNk1mLYEa5VFz3cx9AvqCuU8I+FlENpl2AY2X0E9kND7ZIAmZKhzArIT6KLSJLpiYp3ZNnXyBGpGP7KJmQ==} engines: {node: '>=18.12.0'} peerDependencies: '@microsoft/api-extractor': ^7 @@ -17659,11 +17668,7 @@ packages: optional: true dependencies: '@ast-grep/napi': 0.37.0 - '@rsbuild/core': 1.5.4 - magic-string: 0.30.19 - picocolors: 1.1.1 - tinyglobby: 0.2.15 - tsconfig-paths: 4.2.0 + '@rsbuild/core': 1.5.12 typescript: 5.9.2 dev: true @@ -18863,6 +18868,7 @@ packages: /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + dev: false /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} @@ -19334,14 +19340,6 @@ packages: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - /tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - dev: true - /tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -19508,6 +19506,7 @@ packages: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 + dev: false /tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} diff --git a/projects/demo/emp.config.ts b/projects/demo/emp.config.ts index 8642602a..507f85fe 100644 --- a/projects/demo/emp.config.ts +++ b/projects/demo/emp.config.ts @@ -38,7 +38,10 @@ export default defineConfig(store => { debug: { // showPerformance: true, // showRsconfig: 'wp.json', + + // loggerLevel: 'debug', // clearLog: false, + progress: false, // infrastructureLogging: { // level: 'verbose', // 或 'log',verbose 会输出更详细的日志 // colors: true, // 启用彩色日志,便于区分 @@ -76,6 +79,7 @@ export default defineConfig(store => { prifixName: 'v1', }, // tsCheckerRspackPlugin: true, + // cache: false, } }) //