如何编译

提供手动与自动化两种编译方式。

准备构建环境

确保你的系统上安装了 yarnnodejsgitgolang

Windows

scoop 安装:

scoop install yarn nodejs-lts go

如果你是在刚刚安装 scoop 之后运行该命令,那么你还需要安装 gitmingit

建议安装 PowerShell Core,,如此 scoop 将能更好地工作(尤其是在旧版本 Windows 系统中)。可以从 GitHubMicrosoft Store 下载 PowerShell Core。

Arch Linux 及其衍生版

sudo pacman -S git yarn go

其它 Linux

部分发行版可能提供了 NodeJS 与 Go 语言的安装包,下面的安装方法主要以手动安装为主。

安装 Git:

Debian / Ubuntu

sudo apt install git

RedHat / Alma Linux / Rocky Linux /Fedora

sudo dnf install git

openSUSE

sudo zypper in git

安装 Golang:

https://golang.org/doc/install
或者
https://golang.google.cn/doc/install

安装 Node.js 与 yarn:

参考官方教程安装 Node.js 的 16.x 的版本,然后再安装 yarn。

https://github.com/nodesource/distributions
https://yarnpkg.com/getting-started/install

macOS

首先安装 brew ,然后在终端中运行:

brew install git yarn go node

您可以使用 bash 脚本构建 v2rayA。如果要使用 PowerShell 脚本编译 v2rayA,则应先安装 PowerShell Core。可以从 GitHub 下载 PowerShell Core。

使用脚本构建

Bash 脚本

Bash 脚本在类 UNIX 操作系统上运行,例如 Linux 或 macOS。

注意:bash 脚本不适用于 Windows 上的 git-bash,编译的时候会发生错误。有需要的可以使用 PowerShell 脚本编译。

打开终端,cd 到 v2rayA 源代码所在路径,然后运行bash ./build.sh

PowerShell 脚本

PowerShell 脚本可在所有主流操作系统上运行,包括 Windows、Linux 和 macOS。

打开 PowerShell 窗口并将 cd v2rayA 源代码所在路径,然后运行 ​​pwsh -c build-in-pwsh.ps1 或者 ​​powershell.exe -c build-in-pwsh.ps1

无论使用哪种编译脚本,只要编译成功,v2rayA 源代码所在路径里面就会多出一个 v2rayav2raya.exe 的可执行文件。

手动构建 v2rayA

打开终端,cd 到 v2rayA 源代码所在路径。

v2rayA 的整个服务端实际上是由前端页面和后端服务组成的,但前端页面的编译是独立于后端服务的,所以我们需要先编译前端页面后才可以开始服务端的编译。

前端页面编译

v2rayA 源代码所在路径的 gui 文件夹里存放着前端页面,如果您只是需要对前端进行修改,且您的后端目前正常运行的话,请运行如下命令进行前端的预览:

# 切换到 gui 文件夹
cd gui
# 安装依赖
yarn
# 启动预览
yarn serve

预览页面的默认地址是 http://localhost:8081/ ,正常第一次预览打开后会出现如下提示:

  • 未在 http://localhost:8081 检测到 v2rayA 服务端,请确定 v2rayA 正常运行
  • 您是否需要调整服务端地址?

这时候我们需要点击 您是否需要调整服务端地址? 右边的 按钮来进行服务端地址配置,填写您的服务端地址即可,默认的服务端地址为 http://localhost:2017/ ,实际情况请根据您正在使用的服务端的配置来进行编写,但请确保您的服务端已经启动且正常运行。

确保前端页面可以正常预览后,您可以在终端输入 yarn build 来进行前端的构建。

默认构建文件会生成在 v2rayA 源代码所在路径下的 web 文件夹中,如果您需要切换编译文件存放的地址,请在编译之前设定环境变量 OUTPUT_DIR 的值,具体命令如下:

  • Linux: OUTPUT_DIR=<您指定的绝对路径> yarn build
  • Windows: $env:OUTPUT_DIR = <您指定的绝对路径> && yarn build

编译完成后你就会在 OUTPUT_DIR 目录下看到编译后的文件。

服务端编译

v2rayA 源代码所在路径的 server 文件夹里存放着服务端代码。

为了编译服务端,我们需要在前端页面编译时将环境变量 OUTPUT_DIR 指定为 v2rayA 源代码所在路径下 service/server/router/web 文件夹的绝对路径,后这您可以在编译完成后手动将 web 文件夹移动过去。

随后在终端运行如下命令进行服务端的编译:

# 切换到 server 文件夹
cd server
# 编译服务端
go build -o v2raya

编译完成后会在 server 文件夹下生成对应的可执行文件 v2rayA,同样的,您可以使用 -o 参数来指定编译后的文件名及路径。

值得注意的是,在实际的生产环境中,构建的时候设定了诸如 CGO_ENABLED=0 等参数用来优化编译,完整的编译参数可以查看 build.shbuild-in-pwsh.ps1 中的内容。

在 Github 上编辑此页

最后更新于: 2023年11月22日 23:25:26 +0800

贡献者: MarksonHon easterNday