Files
DP/AdminPanel/plugins/jsx/cepPlugin.ts
zuowei1216 1b19ff1b92 20251222
2025-12-22 21:06:29 +08:00

98 lines
3.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()
}