From fe774dc5d67c928e5c4a970cbb44057165a03996 Mon Sep 17 00:00:00 2001 From: xRain Date: Tue, 20 Oct 2026 21:49:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20useHash=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=9Ahash=20=E8=B7=AF=E7=94=B1=E4=B8=8D=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=20nginx.conf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- action.yml | 28 ++++++++++++++++++---------- vue-hash.Dockerfile | 2 ++ 2 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 vue-hash.Dockerfile diff --git a/action.yml b/action.yml index fdb16cf..da50523 100644 --- a/action.yml +++ b/action.yml @@ -6,6 +6,10 @@ inputs: description: "构建目录(相对仓库根目录,默认 .)。例如前端在 vue 目录下时填 vue" required: false default: "." + useHash: + description: "前端是否使用 hash 路由(默认 false)。false:用 nginx.conf 做 history 回退并加跨域头;true:用 nginx 默认配置,不再注入 nginx.conf" + required: false + default: "false" runs: using: "composite" steps: @@ -18,23 +22,27 @@ runs: npm ci && \ npm run build-only' - # Dockerfile 放在仓库根目录(docker build -f 是相对仓库根目录解析的), - # nginx.conf 放进构建目录(Dockerfile 里的 COPY 是相对构建上下文的)。 - # 构建目录有 nginx.conf 就用项目自己的(例如要开 COOP/COEP 之类的自定义配置), - # 没有才用本 action 自带的通用配置 + # Dockerfile 放在仓库根目录(docker build -f 是相对仓库根目录解析的)。 + # useHash=false:用 vue.Dockerfile,带上 nginx.conf 做 history 回退(构建目录有 nginx.conf 就用项目自己的); + # useHash=true :hash 路由不需要回退,用 vue-hash.Dockerfile + nginx 默认配置,不注入 nginx.conf - uses: docker://ubuntu:latest with: entrypoint: "/bin/bash" args: | -c ' set -e - cp "${{ github.action_path }}/vue.Dockerfile" ./Dockerfile - cd "${{ inputs.context }}" - if [ -f ./nginx.conf ]; then - echo "nginx.conf:用项目自带的" + if [ "${{ inputs.useHash }}" = "true" ]; then + cp "${{ github.action_path }}/vue-hash.Dockerfile" ./Dockerfile + echo "useHash=true:用 nginx 默认配置,不注入 nginx.conf" else - cp "${{ github.action_path }}/nginx.conf" ./nginx.conf - echo "nginx.conf:用 action 内置的" + cp "${{ github.action_path }}/vue.Dockerfile" ./Dockerfile + cd "${{ inputs.context }}" + if [ -f ./nginx.conf ]; then + echo "nginx.conf:用项目自带的" + else + cp "${{ github.action_path }}/nginx.conf" ./nginx.conf + echo "nginx.conf:用 action 内置的" + fi fi ' diff --git a/vue-hash.Dockerfile b/vue-hash.Dockerfile new file mode 100644 index 0000000..e0504ac --- /dev/null +++ b/vue-hash.Dockerfile @@ -0,0 +1,2 @@ +FROM nginx:alpine +COPY dist /usr/share/nginx/html