You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Golang exec库执行bun create vite并选择Lit框架?

解决方法

方法一:使用非交互式命令参数(推荐)

大部分脚手架工具都支持通过命令行参数直接指定选项,跳过交互流程。对于bun create vite,你可以追加-- --template lit参数直接指定Lit框架,无需处理交互菜单:

package main

import (
    "os"
    "os/exec"
)

func main() {
    // 直接指定template参数,跳过交互流程
    cmd := exec.Command("bun", "create", "vite", "lit-element", "--", "--template", "lit")
    // 将命令输出绑定到当前终端,方便查看执行过程
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    
    if err := cmd.Run(); err != nil {
        panic(err)
    }
}

这里的--用于分隔bun命令和传递给vite create的参数,--template lit会告诉Vite直接使用Lit模板创建项目,完全跳过交互选择步骤。

方法二:通过标准输入模拟交互选择

如果必须通过交互菜单选择(比如工具不支持参数指定),你可以将选择内容写入命令的标准输入流。首先需要确认「Select a framework」菜单中Lit对应的选项序号或文本(比如假设Lit是列表中的第3个选项),代码实现如下:

package main

import (
    "io"
    "os"
    "os/exec"
)

func main() {
    cmd := exec.Command("bun", "create", "vite", "lit-element")
    // 获取命令的标准输入管道
    stdin, err := cmd.StdinPipe()
    if err != nil {
        panic(err)
    }
    defer stdin.Close()

    // 绑定命令输出到当前终端
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    // 启动命令
    if err := cmd.Start(); err != nil {
        panic(err)
    }

    // 向标准输入写入选择内容(根据实际菜单序号调整,这里假设Lit对应输入"3")
    _, err = io.WriteString(stdin, "3\n")
    if err != nil {
        panic(err)
    }

    // 等待命令执行完成
    if err := cmd.Wait(); err != nil {
        panic(err)
    }
}

注意:这种方法依赖于菜单的选项顺序,一旦脚手架更新调整了菜单结构,代码就会失效,因此优先推荐方法一。

内容的提问来源于stack exchange,提问作者David Serrano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:38:33