add external export

This commit is contained in:
熊潇 2024-12-07 00:47:43 +08:00
parent a1344b9220
commit 1f380478ba
6 changed files with 119 additions and 6 deletions

View File

@ -1,11 +1,8 @@
// @ts-check
import typescript from '@rollup/plugin-typescript';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import copy from 'rollup-plugin-copy';
import { dts } from 'rollup-plugin-dts';
import json from '@rollup/plugin-json';
import * as glob from 'fast-glob';
import path from 'path';
import esbuild from 'rollup-plugin-esbuild';
import alias from '@rollup/plugin-alias';
@ -19,7 +16,6 @@ const isDev = process.env.NODE_ENV === 'development';
*/
const config = {
input: './src/index.ts',
// input: './src/micro-client.ts',
output: {
dir: './dist',
entryFileNames: 'app.mjs',
@ -114,5 +110,50 @@ const configs = [
'@msgpack/msgpack',
],
},
{
input: './src/scripts/init-data.ts',
output: {
file: './dist/init-data.d.ts',
},
plugins: [dts()],
},
{
input: './src/index.ts',
output: {
file: './dist/app.d.ts',
},
plugins: [dts()],
},
];
export default [...configs, config];
const external = [
{
input: './src/shared/external.ts',
output: {
file: './dist/external.mjs',
},
plugins: [
alias({
// only esbuild needs to be configured
entries: [
{ find: '@', replacement: path.resolve('src') }, // 配置 @ 为 src 目录
],
}),
resolve(),
commonjs(),
esbuild({
target: 'node22',
minify: false,
tsconfig: 'tsconfig.json',
}),
],
},
{
input: './src/shared/external.ts',
output: {
file: './dist/external.d.ts',
},
plugins: [dts()],
},
];
export default [...configs, config, ...external];

View File

@ -1,4 +1,4 @@
import { spawn } from 'child_process';
import { spawn, ChildProcess } from 'child_process';
import { DevData, DevModel } from '../route/dev/model.ts';
import { fileIsExist } from '@kevisual/use-config';
import { transformToMJS } from './build/convert.ts';
@ -156,4 +156,25 @@ export class DevManater {
async getList() {
return this.devList;
}
async runScript(loadScript: string, dev: DevModel) {
const data = dev.data;
const { cwd } = data;
const childProcess = spawn(loadScript, [], {
stdio: 'inherit',
shell: true,
cwd: cwd,
detached: true,
env: {
...process.env,
...data.env,
},
});
return childProcess;
}
}
export const runScript = (dev: DevModel) => {
const data = dev.data;
const { type, code } = data;
//
};

View File

@ -103,3 +103,5 @@ app
ctx.body = 'ok';
})
.addTo(app);

View File

@ -13,6 +13,9 @@ export type DevData = {
codeStatus?: 'success' | 'error'; // 转换状态
status: 'active' | 'inactive'; // 状态, 是否生成codePath
path?: string; // esbuild 打包路径,用于 node 启动, vite 配置 esbuild 配置rollup配置路径等
scripts?: {
[key: string]: string;
};
};
export type Dev = Partial<InstanceType<typeof DevModel>>;

View File

@ -113,3 +113,35 @@ app
ctx.body = dev;
})
.addTo(app);
app
.route({
path: 'dev-app',
key: 'runScript',
})
.define(async (ctx) => {
const id = ctx.query.id;
const script = ctx.query.script;
if (!id) {
ctx.throw(400, 'id is required');
return;
}
if (!script) {
ctx.throw(400, 'script is required');
return;
}
const dev = await DevModel.findByPk(id);
if (!dev) {
ctx.throw(404, 'dev not found');
return;
}
const scripts = dev.data.scripts || {};
const loadScript = scripts[script];
if (!loadScript) {
ctx.throw(404, 'script not found');
return;
}
const result = await devManager.runScript(loadScript, dev);
ctx.body = result;
})
.addTo(app);

14
src/shared/external.ts Normal file
View File

@ -0,0 +1,14 @@
export const nodeExternals = [
/@kevisual\/router(\/.*)?/, //, // 路由
/@kevisual\/use-config(\/.*)?/, //
'sequelize', // 数据库 orm
'ioredis', // redis
'socket.io', // socket.io
'minio', // minio
'pg', // pg
'pino', // pino
'pino-pretty', // pino-pretty
'@msgpack/msgpack', // msgpack
];