内容简介:说来有些悲哀,最近升级了VSCode,golang插件居然无法使用了,一直无法使用,配置了大半天,还是不行,只能提交了反馈,希望能够得到回复吧。不过突然想到一个方法,就是编写脚本,然后在本地运行,虽然不能调试,但是可以运行,速度也还可以接下来,先简单说明一下VSCode如何配置任务吧具体配置,请查看
说来有些悲哀,最近升级了VSCode,golang插件居然无法使用了,一直无法使用,配置了大半天,还是不行,只能提交了反馈,希望能够得到回复吧。不过突然想到一个方法,就是编写脚本,然后在本地运行,虽然不能调试,但是可以运行,速度也还可以
运行报的错误
接下来,先简单说明一下VSCode如何配置任务吧
VSCode配置任务
配置任务
具体配置,请查看 https://go.microsoft.com/fwlink/?LinkId=733558
运行任务用 Shift+Command+B
, windows使用 Shift+Ctrl+B
控制台输出
配置解释:
"tasks": [ { "label": "任务名称", "type": "shell", //类型 脚本一般用shell "command": "脚本路径", //脚本路径 可以是自己写的脚本,写可以是系统命令 比如:ls, node "args": [], //命令参数 即脚本后带的参数,同时可以使用VSCode自带的参数 "group": { "kind": "build", "isDefault": true } } ]
args: 命令参数 即脚本后带的参数,同时可以使用VSCode自带的参数
VSCode可用如下参数:
- ${workspaceRoot} VS Code当前打开的文件夹
- ${file} 当前打开的文件
- ${relativeFile} 相对于workspaceRoot的相对路径
- ${fileBasename} 当前打开文件的文件名
- ${fileDirname} 所在的文件夹,是绝对路径
- ${fileExtname} 当前打开文件的拓展名,如.json
- ${cwd} 当前任务运行时的的控制台所在路径
编写脚本
首先,在编写脚本前,得了解一些知识
1. 设置临时环境变量
golang构建项目,需要设置 GOPATH
,其中包含当前项目路径,多个路径用 :
分隔开来
export GOPATH="<公共库路径>:<当前路径>" # echo $GOPATH
另外还需要如下变量:
export CGO_ENABLED=0 export GOOS=<操作系统> export GOARCH=amd64
这里的 GOOS
是目标操作系统,即(交叉)编译后的可执行文件需要在什么操作系统上运行,目前支持如下配置:
- linux: Linux系统
- darwin:Mac上运行
- windows: windows系统
GOARCH
就是目标操作系统的架构
参考: go如何进行交叉编译 https://www.jianshu.com/p/4b345a9e768e
2. 构建项目
go build src/main.go
是不是很简单?没错,这样就可以了。
不过。。。
如果有资源文件,需要将资源文件复制到可执行文件的目录下,这时候,程序就需要考虑到资源文件的路径问题了,因为开发环境的资源和最终打包后的资源目录大多情况是不一样的,所以程序需要考虑到
具体做法,可以配置命令参数,也可以通过读取临时环境变量来实现,这个不是本文的重点,就一笔带过
代码模板
具体的项目,脚本可能不一样,比如最终打包,可以把上传到服务器,然后部署到服务器,一步到位,都写到脚本中。
所以,这里只提供脚本模板,供大家参考:
run.sh
#!/bin/bash ###################### # 以下是配置 #设置并跳转到之前项目根目录 projectDir=$(cd "$(dirname "$0")/../"; pwd) cd $projectDir #项目配置 #项目名称 projectName="example" #项目最终目录 projectDist="./dist/" #打包后的压缩包文件存放目录 projectRelease="./release" #服务器项目配置,若不是服务器项目,则无需配置 开发者根据实际情况进行配置 serverURL="http://127.0.0.1:8080" #打包配置 #参数 目标操作系统 第一个参数 platform=$1 # darwin linux windows echo "目标:${platform}" # 这一步需要根据开发者自己的情况配置,若无全局的库,直接填${projectDir}即可 echo "-> 设置临时环境变量" export GOPATH="${projectDir}/../global:${projectDir}" export CGO_ENABLED=0 export GOOS=$platform #参数 目标操作系统架构,这里写死,有需求的话,自己可以修改 export GOARCH="amd64" ###################### # 以下是打包 echo "-> 开始编译..." go build src/main.go echo "-> 开始打包:" echo " 打包路径:${projectDist}" if [ -d "${projectDist}/" ];then rm -r "${projectDist}/" fi mkdir "${projectDist}/" # 这里是复制资源路径到dist目录,若没有资源,则无需配置 # 已conf目录为例 cp -r "conf/" "${projectDist}/conf/" # 移动并重命名 echo "-> 移动到dist目录" mv "main" "${projectDist}/$projectName" # 授予可执行权限 chmod 777 "${projectDist}/$projectName" echo " 打包完成,程序入口:${projectDist}/$projectName" #压缩备份,方便上传,此步骤不是必须的 if [ ! -d "${projectRelease}/" ];then mkdir "${projectRelease}/" fi tar -zcvf "$projectRelease/${projectName}-${platform}.tar.gz" "${projectDist}" ###################### # 以下是执行 #杀死已经在运行的进程 ps -ef|grep "$projectName"|grep -v "grep"|awk '{print $2}'|xargs kill -9 cd $projectDist # 后台运行项目 并输出日志 ./$projectName>std.log 2>&1 & # 若不是服务器项目,则无需执行该步骤 open $serverURL
代码浅析
- 首先是设置变量以及临时环境变量
- 然后就是编译
- 打包:复制资源目录,可执行文件重命名并授予权限
- 压缩文件,有需要的话上传
- 最后执行文件并输出日志,记得先kill掉之前的进程
- 最后配置task, 记得在args里边加上操作系统的参数,比如: darwin
也可以直接在控制台运行:./tools/run.sh darwin
配置gitignore文件
如果有使用git的话,记得在gitignore文件加上:
dist/ release/
最后,附上一张可爱的土拨鼠图片吧 ^0^
image.png
以上所述就是小编给大家介绍的《golang构建项目的脚本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Gradle系列之构建脚本基础
- 通过Roslyn构建自己的C#脚本(更新版)
- 不得不学之「 Gradle」 ③ 构建脚本基础
- GCC 7和LLVM+Clang+libc++abi 4.0的构建脚本
- 脚本文件里的 Hybrid Script(混合式脚本)
- 脚本错误量极致优化-定位压缩且无 SourceMap 文件的脚本错误
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。