This commit is contained in:
zuowei1216
2025-12-22 21:06:29 +08:00
parent 8ea58fe480
commit 1b19ff1b92
179 changed files with 21895 additions and 3774 deletions

View File

@@ -0,0 +1,98 @@
import { copyCepToDev, copyCepToProd } from "./copyCepToDev"
import { createConfig } from "./createConfig"
// 注意:已移除 buildJsx 依赖,现在使用内联 JSX 方式
//@ts-ignore
import packageConfig from "../../package.json"
import defaultConfig from '../../cep.config';
import { ICepConfig } from "./types";
let g_config: any = ''
interface CepPluginOptions {
cepConfig?: ICepConfig;
jsxInput?: string;
jsxOutput?: string;
jsxIncludes?: string[];
}
export default function cepPlugin(options: CepPluginOptions = {}) {
const config = options.cepConfig || defaultConfig;
return {
name: 'transform-file',
async buildStart(viteConfig: any) {
// 已移除 JSX 构建逻辑,现在使用内联 JSX 方式
if (process.env.NODE_ENV === 'production') {
console.log('正式环境 - 使用内联 JSX');
}
},
transform(src: any, id: any) {
},
configResolved(viteConfig: any) {
g_config = viteConfig
if (viteConfig.isProduction)
return console.log('[cepPlugin]打包不处理');
// 已移除 JSX 监听构建,现在使用内联 JSX 方式
console.log('[cepPlugin] 使用内联 JSX无需构建外部文件');
const name = `${getProjectName(viteConfig.root)}-dev`
// 使用配置的端口strictPort: true 确保端口不会变)
const port = viteConfig.server?.port || 5180
const serverURL = `http://localhost:${port}/`
try {
const cepConfig = createConfig(viteConfig.root, {
name: name,
id: `com.${name}`,
version: packageConfig.version,
}, "dev")
copyCepToDev({
serverURL: serverURL,
name: name,
isBuild: false
}, cepConfig)
} catch (error) {
console.log('[CEP] 初始化失败');
console.log(error);
}
},
async closeBundle() {
if (!g_config.isProduction)
return console.log('[cepPlugin]开发环境不处理');
// await buildJsxByProd()
const name = `${getProjectName(g_config.root)}`
try {
// Use the provided config instead of recreating from package.json if possible,
// but createConfig merges simple props.
// Wait, createConfig uses hardcoded template logic.
// Let's passed detailed config if needed.
// For now, we trust config passed in options.
// Note: createConfig logic might need review if we want full Custom Config control.
// But typically it uses the 'config' object we imported/selected at top.
// Actually createConfig generates the manifest content string.
// We should pass our 'config' object to the copy/write logic.
console.log('[id]:' + config.id);
copyCepToProd({
// 方案 BCEP 插件打开后直接跳转到服务器 Shell 登录页
serverURL: 'https://aidg168.uk/shell/#/login',
name: name,
isBuild: true,
distDir: g_config.build.outDir
}, config)
} catch (error) {
console.log('[CEP] 初始化失败');
console.log(error);
}
console.log('[cepPlugins] 编译成功');
}
}
}
function getProjectName(root: string) {
if(root.endsWith("src/launcher")) return "Designer"; // Hack for launcher root? No, Vite root usually project root.
return root.split('/').pop()
}