From a56bb562d82556d7c77524e6265dccde5f2de299 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Wed, 27 Aug 2025 19:08:57 +0800 Subject: [PATCH] =?UTF-8?q?build:=20=E6=9E=84=E5=BB=BAplayground=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- runtime/react/package.json | 7 ++-- runtime/react/page/vite.config.ts | 17 -------- runtime/react/playground/vite.config.ts | 16 ------- runtime/react/scripts/build.mjs | 51 ++++++++++++++++++----- runtime/react/scripts/vite.res.config.mjs | 21 +--------- runtime/vue/package.json | 7 ++-- runtime/vue/page/vite.config.ts | 19 --------- runtime/vue/playground/vite.config.ts | 18 -------- runtime/vue/scripts/build.mjs | 51 ++++++++++++++++++----- runtime/vue/scripts/vite.res.config.mjs | 21 +--------- 10 files changed, 90 insertions(+), 138 deletions(-) diff --git a/runtime/react/package.json b/runtime/react/package.json index d2b9a3e4..b1a3d3f4 100644 --- a/runtime/react/package.json +++ b/runtime/react/package.json @@ -10,9 +10,10 @@ "tmagic": "tmagic entry", "dev:react": "vite --force", "serve": "vite preview", - "build": "rimraf ./dist && node scripts/build.mjs --type=all && npm run build:client", - "build:libs": "npm run tmagic && node scripts/build.mjs --type=res", - "build:client": "vite build --config ./page/vite.config.ts && vite build --config ./playground/vite.config.ts" + "build": "rimraf ./dist && node scripts/build.mjs --type=all", + "build:libs": "node scripts/build.mjs --type=res", + "build:page": "node scripts/build.mjs --type=page", + "build:playground": "node scripts/build.mjs --type=playground" }, "dependencies": { "@tmagic/core": "1.6.0-beta.6", diff --git a/runtime/react/page/vite.config.ts b/runtime/react/page/vite.config.ts index 2f46be6b..c88c982d 100644 --- a/runtime/react/page/vite.config.ts +++ b/runtime/react/page/vite.config.ts @@ -1,27 +1,10 @@ -import path from 'node:path'; - import { defineConfig } from 'vite'; -import fse from 'fs-extra'; - import baseConfig from '../vite.config'; export default defineConfig({ ...baseConfig, - plugins: [ - ...(baseConfig.plugins || []), - { - name: 'vite-plugin-copy-runtime', - apply: 'build', - enforce: 'post', - closeBundle() { - const clientFile = path.resolve(__dirname, '../dist/page') - fse.copySync(clientFile, path.resolve(__dirname, '../../../playground/public/runtime/react/page')) - }, - } - ], - root: './page', publicDir: '../public', diff --git a/runtime/react/playground/vite.config.ts b/runtime/react/playground/vite.config.ts index 0a855a13..f962701a 100644 --- a/runtime/react/playground/vite.config.ts +++ b/runtime/react/playground/vite.config.ts @@ -1,26 +1,10 @@ -import path from 'node:path'; - import { defineConfig } from 'vite'; -import fse from 'fs-extra'; import baseConfig from '../vite.config'; export default defineConfig({ ...baseConfig, - plugins: [ - ...(baseConfig.plugins || []), - { - name: 'vite-plugin-copy-runtime', - apply: 'build', - enforce: 'post', - closeBundle() { - const clientFile = path.resolve(__dirname, '../dist/playground') - fse.copySync(clientFile, path.resolve(__dirname, '../../../playground/public/runtime/react/playground')) - }, - } - ], - root: './playground', publicDir: '../public', diff --git a/runtime/react/scripts/build.mjs b/runtime/react/scripts/build.mjs index b7db81f0..881389b4 100644 --- a/runtime/react/scripts/build.mjs +++ b/runtime/react/scripts/build.mjs @@ -1,3 +1,4 @@ +import { execSync } from 'node:child_process'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -11,21 +12,49 @@ const args = minimist(process.argv.slice(2)); const dirname = path.dirname(fileURLToPath(import.meta.url)); -const buildList = []; +fse.removeSync(path.resolve(dirname, '../.tmagic')); + +execSync('tmagic entry', { + stdio: 'inherit', + cwd: path.resolve(dirname, '../'), +}); if (args.type === 'res' || args.type === 'all') { fse.removeSync(path.resolve(dirname, '../dist/entry')); - for (const mode of ['value', 'config', 'event', 'ds:value', 'ds:config', 'ds:event']) { - buildList.push( - buildVite({ - root: path.resolve(dirname, '../'), - clearScreen: false, - configFile: false, - ...resViteConfig(mode), - }), - ); + const fileName = mode.replace(':', '-'); + + buildVite({ + root: path.resolve(dirname, '../'), + clearScreen: false, + configFile: false, + ...resViteConfig(mode), + }).then(() => { + fse.copySync( + path.resolve(dirname, '../dist/entry', fileName), + path.resolve(dirname, '../../../playground/public/entry/vue/', fileName), + ); + }); } } -Promise.all(buildList); +const buildRuntime = (type) => { + fse.removeSync(path.resolve(dirname, '../dist', type)); + + buildVite({ + root: path.resolve(dirname, '../', type), + clearScreen: false, + configFile: path.resolve(dirname, '../', type, 'vite.config.ts'), + }).then(() => { + const clientFile = path.resolve(dirname, '../dist', type); + fse.copySync(clientFile, path.resolve(dirname, '../../../playground/public/runtime/react', type)); + }); +}; + +if (args.type === 'page' || args.type === 'all') { + buildRuntime('page'); +} + +if (args.type === 'playground' || args.type === 'all') { + buildRuntime('playground'); +} diff --git a/runtime/react/scripts/vite.res.config.mjs b/runtime/react/scripts/vite.res.config.mjs index 6c8d253d..f4ff2f7d 100644 --- a/runtime/react/scripts/vite.res.config.mjs +++ b/runtime/react/scripts/vite.res.config.mjs @@ -1,10 +1,4 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - import { defineConfig } from 'vite'; -import fse from 'fs-extra'; - -const dirname = path.dirname(fileURLToPath(import.meta.url)); export default defineConfig((mode) => { const capitalToken = mode @@ -15,19 +9,6 @@ export default defineConfig((mode) => { const fileName = mode.replace(':', '-'); return { - plugins: [ - { - name: 'vite-plugin-copy-runtime', - apply: 'build', - enforce: 'post', - closeBundle() { - fse.copySync( - path.resolve(dirname, '../dist/entry', fileName), - path.resolve(dirname, '../../../playground/public/entry/react/', fileName), - ); - }, - }, - ], publicDir: './.tmagic/public', build: { cssCodeSplit: false, @@ -37,7 +18,7 @@ export default defineConfig((mode) => { outDir: `./dist/entry/${fileName}`, lib: { - entry: `.tmagic/${fileName}-entry.ts`, + entry: `./.tmagic/${fileName}-entry.ts`, name: `magicPreset${capitalToken}s`, fileName: 'index', formats: ['umd'], diff --git a/runtime/vue/package.json b/runtime/vue/package.json index 526be365..6bb40579 100644 --- a/runtime/vue/package.json +++ b/runtime/vue/package.json @@ -10,9 +10,10 @@ "tmagic": "tmagic entry", "dev": "vite --force", "serve": "vite preview", - "build": "rimraf ./dist && node scripts/build.mjs --type=all && npm run build:client", - "build:libs": "npm run tmagic && node scripts/build.mjs --type=res", - "build:client": "vite build --config ./page/vite.config.ts && vite build --config ./playground/vite.config.ts" + "build": "rimraf ./dist && node scripts/build.mjs --type=all", + "build:libs": "node scripts/build.mjs --type=res", + "build:page": "node scripts/build.mjs --type=page", + "build:playground": "node scripts/build.mjs --type=playground" }, "dependencies": { "@tmagic/core": "1.6.0-beta.6", diff --git a/runtime/vue/page/vite.config.ts b/runtime/vue/page/vite.config.ts index 7ffa0ff0..cb716b4f 100644 --- a/runtime/vue/page/vite.config.ts +++ b/runtime/vue/page/vite.config.ts @@ -1,29 +1,10 @@ -import path from 'node:path'; - import { defineConfig } from 'vite'; -import fse from 'fs-extra'; - import baseConfig from '../vite.config'; export default defineConfig({ ...baseConfig, - plugins: [ - ...(baseConfig.plugins || []), - { - name: 'vite-plugin-copy-runtime', - apply: 'build', - enforce: 'post', - closeBundle() { - const clientFile = path.resolve(__dirname, '../dist/page') - fse.copySync(clientFile, path.resolve(__dirname, '../../../playground/public/runtime/vue/page')) - }, - } - ], - - root: './page', - publicDir: '../public', base: `${baseConfig.base}/page`, diff --git a/runtime/vue/playground/vite.config.ts b/runtime/vue/playground/vite.config.ts index 0d17d538..2d53d389 100644 --- a/runtime/vue/playground/vite.config.ts +++ b/runtime/vue/playground/vite.config.ts @@ -1,28 +1,10 @@ -import path from 'node:path'; - import { defineConfig } from 'vite'; -import fse from 'fs-extra'; import baseConfig from '../vite.config'; export default defineConfig({ ...baseConfig, - plugins: [ - ...(baseConfig.plugins || []), - { - name: 'vite-plugin-copy-runtime', - apply: 'build', - enforce: 'post', - closeBundle() { - const clientFile = path.resolve(__dirname, '../dist/playground') - fse.copySync(clientFile, path.resolve(__dirname, '../../../playground/public/runtime/vue/playground')) - }, - } - ], - - root: './playground', - publicDir: '../public', base: `${baseConfig.base}/playground`, diff --git a/runtime/vue/scripts/build.mjs b/runtime/vue/scripts/build.mjs index b7db81f0..0562f6e6 100644 --- a/runtime/vue/scripts/build.mjs +++ b/runtime/vue/scripts/build.mjs @@ -1,3 +1,4 @@ +import { execSync } from 'node:child_process'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -11,21 +12,49 @@ const args = minimist(process.argv.slice(2)); const dirname = path.dirname(fileURLToPath(import.meta.url)); -const buildList = []; +fse.removeSync(path.resolve(dirname, '../.tmagic')); + +execSync('tmagic entry', { + stdio: 'inherit', + cwd: path.resolve(dirname, '../'), +}); if (args.type === 'res' || args.type === 'all') { fse.removeSync(path.resolve(dirname, '../dist/entry')); - for (const mode of ['value', 'config', 'event', 'ds:value', 'ds:config', 'ds:event']) { - buildList.push( - buildVite({ - root: path.resolve(dirname, '../'), - clearScreen: false, - configFile: false, - ...resViteConfig(mode), - }), - ); + const fileName = mode.replace(':', '-'); + + buildVite({ + root: path.resolve(dirname, '../'), + clearScreen: false, + configFile: false, + ...resViteConfig(mode), + }).then(() => { + fse.copySync( + path.resolve(dirname, '../dist/entry', fileName), + path.resolve(dirname, '../../../playground/public/entry/vue/', fileName), + ); + }); } } -Promise.all(buildList); +const buildRuntime = (type) => { + fse.removeSync(path.resolve(dirname, '../dist', type)); + + buildVite({ + root: path.resolve(dirname, '../', type), + clearScreen: false, + configFile: path.resolve(dirname, '../', type, 'vite.config.ts'), + }).then(() => { + const clientFile = path.resolve(dirname, '../dist', type); + fse.copySync(clientFile, path.resolve(dirname, '../../../playground/public/runtime/vue', type)); + }); +}; + +if (args.type === 'page' || args.type === 'all') { + buildRuntime('page'); +} + +if (args.type === 'playground' || args.type === 'all') { + buildRuntime('playground'); +} diff --git a/runtime/vue/scripts/vite.res.config.mjs b/runtime/vue/scripts/vite.res.config.mjs index 5427b3bd..f4ff2f7d 100644 --- a/runtime/vue/scripts/vite.res.config.mjs +++ b/runtime/vue/scripts/vite.res.config.mjs @@ -1,10 +1,4 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - import { defineConfig } from 'vite'; -import fse from 'fs-extra'; - -const dirname = path.dirname(fileURLToPath(import.meta.url)); export default defineConfig((mode) => { const capitalToken = mode @@ -15,19 +9,6 @@ export default defineConfig((mode) => { const fileName = mode.replace(':', '-'); return { - plugins: [ - { - name: 'vite-plugin-copy-runtime', - apply: 'build', - enforce: 'post', - closeBundle() { - fse.copySync( - path.resolve(dirname, '../dist/entry', fileName), - path.resolve(dirname, '../../../playground/public/entry/vue/', fileName), - ); - }, - }, - ], publicDir: './.tmagic/public', build: { cssCodeSplit: false, @@ -37,7 +18,7 @@ export default defineConfig((mode) => { outDir: `./dist/entry/${fileName}`, lib: { - entry: `.tmagic/${fileName}-entry.ts`, + entry: `./.tmagic/${fileName}-entry.ts`, name: `magicPreset${capitalToken}s`, fileName: 'index', formats: ['umd'],