go编写前端打包工具
- npm run build打包工具
- 代码解释:
npm run build打包工具
package mainimport ("fmt""os""os/exec""path/filepath"
)func main() {test1()
}func test1() {const buildC = "npm run build"webPath := filepath.Join("./", "web")distPath := filepath.Join("./", "dist")var exists = func(path string) (bool, error) {_, err := os.Stat(path)if err == nil {return true, nil}if os.IsNotExist(err) {// 是一个错误类型断言函数,用于检查 os.Stat 返回的错误是否是因为指定的文件或目录不存在return false, nil}return false, nil}var removeDir = func(path string) error {return os.RemoveAll(path)}var renameDir = func(oldPath, newPath string) error {return os.Rename(oldPath, newPath)}// 1.简称web对应的文件是否存在,存在即删除exist, err := exists(webPath)if exist {fmt.Println("删除旧文件,请稍等...")if err := removeDir(webPath); err != nil {fmt.Print(err)return}fmt.Printf("移除文件:%v\n", webPath)}// 2.node编译// cmd.exe 是 Windows 系统中的命令提示符。// /C 参数表示执行命令后立即退出。// "go version" 是要执行的命令字符串。cmd := exec.Command("cmd", "/c", buildC)fmt.Println("正在编译前端文件,请稍等...")_, err2 := cmd.CombinedOutput()if err != nil {fmt.Printf("命令执行失败: %v\n", err2)return}// 文件重命名// 3.查看dist文件夹,存在将dist重命名为webdistExist, err := exists(distPath)if distExist {fmt.Println("重命名,请稍等...")err := renameDir(distPath, webPath)if err != nil {fmt.Print(err)}}const (reset = "\033[0m"green = "\033[32m")fmt.Printf("%s编译完成%s\n", green, reset)
}
代码解释:
1. exec.Command:
- exec.Command 用于创建一个新的命令对象。第一个参数是命令的名称(如 npm),后续参数是命令的参数(如 run build)。
2. cmd.Dir:
- cmd.Dir 用于设置命令的工作目录。如果你的 npm run build 命令需要在特定的项目目录下运行,可以设置这个属性。如果不设置,默认为当前工作目录。
3 .cmd.CombinedOutput:
- cmd.CombinedOutput 用于执行命令并捕获命令的标准输出和标准错误输出。返回的 output 是命令的输出内容,err 是执行过程中可能发生的错误。
4.错误处理
- 如果命令执行失败,err 将不为 nil,你可以根据需要处理错误。
5. 打印输出:
- 将命令的输出内容转换为字符串并打印出来。
6.编译成可执行文件
go build -o compiler.exe ./main.go