From 0d15877765ccfb3d869a8499777ee90d157d4043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=90=AF=E6=BA=90?= Date: Tue, 21 Jul 2026 14:02:54 +0800 Subject: [PATCH] feat(demo): deploy stable release preview --- .gitea/workflows/package.yml | 31 +++++++++++++++++++++++++++++++ README.md | 7 ++++++- package.json | 2 +- vite.config.ts | 1 + 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/package.yml b/.gitea/workflows/package.yml index bd55c91..454c8a7 100644 --- a/.gitea/workflows/package.yml +++ b/.gitea/workflows/package.yml @@ -113,6 +113,8 @@ jobs: run: pnpm test:coverage - name: Build component + env: + DEMO_BASE_PATH: /waveform-analysis/ run: pnpm build - name: Pack component @@ -173,6 +175,35 @@ jobs: npm config set -- '//registry.npmjs.org/:_authToken' "$NODE_AUTH_TOKEN" npm publish "./$package_file" --registry='https://registry.npmjs.org/' --tag "$NPM_DIST_TAG" --access public + - name: Deploy stable demo + shell: bash + run: | + set -euo pipefail + source release.env + if [[ "$IS_PRERELEASE" == 'true' ]]; then + echo 'Skipping demo deployment for prerelease' + exit 0 + fi + + deploy_root='/demo-deploy' + releases_dir="$deploy_root/releases" + release_dir="$releases_dir/$PACKAGE_VERSION" + test ! -e "$release_dir" + install -d -m 755 "$releases_dir" + staging_dir="$(mktemp -d "$deploy_root/.staging-${PACKAGE_VERSION}-XXXXXX")" + trap 'rm -rf -- "$staging_dir"' EXIT + cp -a dist-demo/. "$staging_dir/" + find "$staging_dir" -type d -exec chmod 755 {} + + find "$staging_dir" -type f -exec chmod 644 {} + + mv "$staging_dir" "$release_dir" + trap - EXIT + ln -sfn "releases/$PACKAGE_VERSION" "$deploy_root/current" + + mapfile -t old_releases < <(find "$releases_dir" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort -V | head -n -5) + for old_release in "${old_releases[@]}"; do + rm -rf -- "$releases_dir/$old_release" + done + - name: Create Gitea release shell: bash env: diff --git a/README.md b/README.md index 9d399bf..37bac82 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,10 @@ 组件使用 SVG 绘制坐标轴和波形;大数据会按当前可见范围和屏幕像素自动保峰降采样, tooltip 与标注仍使用完整原始数据。 +## 在线示例 + +最新稳定版 Demo: + ## 开始使用 ```bash @@ -30,7 +34,8 @@ pnpm test:coverage pnpm build ``` -`pnpm build` 同时生成 `dist` 组件库产物和 `dist-demo` 演示应用。正式公开入口为 +`pnpm build` 同时生成 `dist` 组件库产物和 `dist-demo` 演示应用。发布稳定版后,在线示例 +会自动更新;预发布版本不会覆盖在线示例。正式公开入口为 `src/index.ts`;发布后使用包入口: ```ts diff --git a/package.json b/package.json index 2b6c74a..c1eb2c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "waveform-analysis", - "version": "0.1.9", + "version": "0.1.10", "main": "./dist/index.cjs", "module": "./dist/index.js", "types": "./dist/types/index.d.ts", diff --git a/vite.config.ts b/vite.config.ts index 3fdbd53..be47edd 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,7 @@ import vue from '@vitejs/plugin-vue' import { defineConfig } from 'vitest/config' export default defineConfig({ + base: process.env.DEMO_BASE_PATH ?? '/', plugins: [vue()], server: { host: '0.0.0.0',