Initial commit
This commit is contained in:
49
src/utils/dev-operations.ts
Normal file
49
src/utils/dev-operations.ts
Normal 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user