Files
test1/src/utils/dev-operations.ts
2026-01-07 14:39:50 +08:00

50 lines
1.4 KiB
TypeScript

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);
}