Initial commit

This commit is contained in:
2026-01-07 14:39:50 +08:00
commit 459c49ec41
30 changed files with 10501 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
import {WebContainer} from "@webcontainer/api";
import {Terminal} from "@xterm/xterm";
export async function installDependencies(instance: WebContainer, terminal: Terminal) {
const installProcess = await instance.spawn('npm', ['install']);
terminal.write("依赖安装中...");
installProcess.output.pipeTo(new WritableStream({
write(data) {
terminal.write(data);
}
}));
const exitCode = await installProcess.exit;
if (exitCode == 0) {
terminal.write("依赖安装完毕,准备运行\n");
return true;
} else {
terminal.write(`依赖安装失败,报错信息如上`);
return false;
}
}
export async function startDevServer(instance: WebContainer, terminal: Terminal, callback: (url: string) => void) {
instance.on('server-ready', (_port, url) => {
terminal.write("服务启动完毕,即将进行加载");
setTimeout(() => {
callback(url);
}, 500)
});
terminal.write("启动服务中...");
const serverProcess = await instance.spawn('npm', ['run', 'start']);
serverProcess.output.pipeTo(
new WritableStream({
write(data) {
terminal.write(data);
},
})
)
const exitCode = await serverProcess.exit;
if (exitCode != 0) {
terminal.write(`服务启动失败,报错信息如上`);
return false;
}
}
export async function writeIndexJS(instance: WebContainer, content: string) {
await instance.fs.writeFile('/index.js', content);
}