diff --git a/.env b/.env index ea70876..ae72de3 100644 --- a/.env +++ b/.env @@ -1,4 +1,11 @@ -# WS_HOST= -# API_HOST= -# NEZHA_HOST= -# NEZHA_HOST_REPACE_PATH= +#### Sarasa Term SC字体的配置 +# VITE_DISABLE_SARASA_TERM_SC=1 +# VITE_SARASA_TERM_SC_USE_CDN=1 + +#### 引用库的CDN配置 +# VITE_USE_CDN=1 +# VITE_CDN_LIB_TYPE=jsdelivr # jsdelivr | cdnjs | loli + +#### 哪吒的默认版本控制 +# VITE_NEZHA_VERSION=v1 # v0 | v0 + diff --git a/.env.development.local.template b/.env.development.local.template new file mode 100644 index 0000000..f44c490 --- /dev/null +++ b/.env.development.local.template @@ -0,0 +1,11 @@ +# 能反代WS的主机,方便本地ws调试 +PROXY_WS_HOST= +# API的HOST,/api/xxx会被替换为这个HOST +API_HOST= +# WS的HOST,/ws和/api/v1/ws/server会被替换为这个HOST +WS_HOST= +# V0开发模式需要一个哪吒地址,用去抓取哪吒的数据 +NEZHA_HOST= +# VO开发模式,本地会请求/nezha/,此项为1时,会去掉/nezha/ +NEZHA_HOST_REPACE_PATH=1 + diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index cc844a9..3b5035c 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -1,6 +1,9 @@ name: Build and Push Docker Image on: + push: + tags: + - 'v*.*.*' workflow_dispatch: inputs: version: @@ -35,13 +38,24 @@ jobs: - name: Print version run: echo "Version is $VERSION" - - name: Build project + - name: 构建完整引用版本 run: npm run build - - name: Build Docker image + - name: 构建完整引用版本的Docker镜像 run: | docker build -t ghcr.io/${{ github.repository }}:$VERSION . + - name: 构建CDN引用版本 + env: + VITE_SARASA_TERM_SC_USE_CDN: '1' + VITE_USE_CDN: '1' + VITE_CDN_LIB_TYPE: 'jsdelivr' + run: npm run build + + - name: 构建CDN引用版本的Docker镜像 + run: | + docker build -t ghcr.io/${{ github.repository }}:$VERSION-cdn . + - name: Log in to GitHub Container Registry run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin @@ -50,3 +64,9 @@ jobs: docker push ghcr.io/${{ github.repository }}:$VERSION docker tag ghcr.io/${{ github.repository }}:$VERSION ghcr.io/${{ github.repository }}:latest docker push ghcr.io/${{ github.repository }}:latest + + - name: Push CDN Docker image + run: | + docker push ghcr.io/${{ github.repository }}:$VERSION-cdn + docker tag ghcr.io/${{ github.repository }}:$VERSION-cdn ghcr.io/${{ github.repository }}:cdn + docker push ghcr.io/${{ github.repository }}:cdn diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0dff021..0691b4f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,9 @@ name: Build and Release on: + push: + tags: + - 'v*.*.*' workflow_dispatch: inputs: version: @@ -14,6 +17,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v3 + with: + fetch-depth: 2 # 获取最近的两次提交 - name: Setup Node.js uses: actions/setup-node@v3 @@ -23,9 +28,6 @@ jobs: - name: Install dependencies run: npm install - - name: Build project - run: npm run build - - name: Get version from package.json id: get_version run: echo "::set-output name=version::$(node -p "require('./package.json').version")" @@ -50,30 +52,74 @@ jobs: draft: false prerelease: false - - name: Package first build output - run: | - zip -r v0-${{ steps.determine_version.outputs.version }}.zip dist + - name: 构建v0版本 - 完整引用版本 + run: npm run build - - name: Build project with VITE_NEZHA_VERSION - run: | - export VITE_NEZHA_VERSION=v1 - npm run build + - name: 打包v0-${{ steps.determine_version.outputs.version }}-all.zip + run: zip -r v0-${{ steps.determine_version.outputs.version }}-all.zip dist - - name: Package second build output - run: | - zip -r dist.zip dist + - name: 构建v0版本 - JSDeliver引用版本 + env: + VITE_SARASA_TERM_SC_USE_CDN: '1' + VITE_USE_CDN: '1' + VITE_CDN_LIB_TYPE: 'jsdelivr' + run: npm run build - - name: Upload Release Asset - First Build + - name: 打包v0-${{ steps.determine_version.outputs.version }}-cdn-jsdelivr.zip + run: zip -r v0-${{ steps.determine_version.outputs.version }}-cdn-jsdelivr.zip dist + + - name: 构建v0版本 - loli(CDNJS)引用版本 + env: + VITE_SARASA_TERM_SC_USE_CDN: '1' + VITE_USE_CDN: '1' + VITE_CDN_LIB_TYPE: 'loli' + run: npm run build + + - name: 打包v0-${{ steps.determine_version.outputs.version }}-cdn-loli.zip + run: zip -r v0-${{ steps.determine_version.outputs.version }}-cdn-loli.zip dist + + - name: 构建哪吒v1内置版本 + env: + VITE_NEZHA_VERSION: 'v1' + VITE_SARASA_TERM_SC_USE_CDN: '1' + VITE_USE_CDN: '1' + VITE_CDN_LIB_TYPE: 'jsdelivr' + run: npm run build + + - name: 打包dist.zip + run: zip -r dist.zip dist + + - name: Upload v0-${{ steps.determine_version.outputs.version }}-all.zip uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./v0-${{ steps.determine_version.outputs.version }}.zip - asset_name: v0-${{ steps.determine_version.outputs.version }}.zip + asset_path: ./v0-${{ steps.determine_version.outputs.version }}-all.zip + asset_name: v0-${{ steps.determine_version.outputs.version }}-all.zip asset_content_type: application/zip - - name: Upload Release Asset - Second Build + - name: Upload v0-${{ steps.determine_version.outputs.version }}-cdn-jsdelivr.zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./v0-${{ steps.determine_version.outputs.version }}-cdn-jsdelivr.zip + asset_name: v0-${{ steps.determine_version.outputs.version }}-cdn-jsdelivr.zip + asset_content_type: application/zip + + - name: Upload v0-${{ steps.determine_version.outputs.version }}-cdn-loli.zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./v0-${{ steps.determine_version.outputs.version }}-cdn-loli.zip + asset_name: v0-${{ steps.determine_version.outputs.version }}-cdn-loli.zip + asset_content_type: application/zip + + - name: Upload dist.zip uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -85,8 +131,20 @@ jobs: - name: Add release notes run: | + # 获取最近一次提交的变更内容 + git diff HEAD^ HEAD --name-only > changes.txt + + # 获取现有的发布说明 gh release view v${{ steps.determine_version.outputs.version }} --json body -q .body > body.txt - echo -e "哪吒V1请下载dist.zip\n哪吒V0请下载v0-${{ steps.determine_version.outputs.version }}.zip" >> body.txt + + # 将变更内容添加到发布说明中 + echo -e "### Changes in this release\n" >> body.txt + cat changes.txt >> body.txt + + # 添加其他发布说明 + echo -e "\n哪吒V1请下载dist.zip\n哪吒V0请下载v0-${{ steps.determine_version.outputs.version }}-all.zip\n至于all是全量的,cdn-jsdelivr是jsdelivr引用版,cdn-loli是cdnjs引用版\nv0版本构建物通过修改./config.js指定nezhaVersion版本可以正常在v1中使用" >> body.txt + + # 更新发布说明 gh release edit v${{ steps.determine_version.outputs.version }} --notes-file body.txt env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/package.json b/package.json index 1ef387d..2ffd05d 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { "name": "nazhua", - "version": "0.4.3", + "version": "0.4.4", "type": "module", "scripts": { "dev": "vite", "build": "vite build", + "build:cdn": "cross-env VITE_SARASA_TERM_SC_USE_CDN=1 VITE_USE_CDN=1 vite build", "preview": "vite preview", "lint": "eslint ." }, @@ -27,13 +28,15 @@ "@babel/plugin-proposal-optional-chaining": "^7.21.0", "@vitejs/plugin-vue": "^5.1.4", "@vue/eslint-config-airbnb": "^7.0.0", + "cross-env": "^7.0.3", "dotenv": "^16.4.5", "eslint": "^8.34.0", "eslint-plugin-vue": "^9.9.0", "sass": "^1.81.0", "vite": "^5.4.10", "vite-plugin-babel": "^1.2.0", - "vite-plugin-eslint": "^1.8.1" + "vite-plugin-eslint": "^1.8.1", + "vite-svg-loader": "^5.1.0" }, "repository": { "type": "git", diff --git a/readme.md b/readme.md index f82640d..e66ee2b 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,7 @@ # Nazhua 基于哪吒监控(nezha.wiki)v0版本构建的前端主题,目前兼容与v0相同数据结构的v1版本。 -主题有点**重**,因为内置了一个带中文的`SarasaTermSC-SemiBold`字体。 +~~主题有点**重**,因为内置了一个带中文的`SarasaTermSC-SemiBold`字体。~~ +根据不同场景,可以选择是否打包带入或者是否加载这个字体。 ## 劝退指南 用前必读 1. 本主题是基于哪吒监控v0版本构建的,不确定能否完美v1版本。*20241206的版本已适配* @@ -11,9 +12,9 @@ ### Docker版本的nazhua 使用V1必须在`config.js`中指定`nezhaVersion`的版本为`v1`,**大小写敏感* 默认的数据是基于V0 -### Release版本的nazhua +### Release版本的nazhua V1下载最新版本[Releases](https://github.com/hi2shark/nazhua/releases)的`dist.zip`; -V0下载最新版本[Releases](https://github.com/hi2shark/nazhua/releases)的`v0-X.X.X.zip`; +V0下载最新版本[Releases](https://github.com/hi2shark/nazhua/releases)的`v0-{版本}-all.zip`或`v0-{版本}.zip`; ## 关于点阵地图 点阵地图是一个失真的地图,地图边际与城市位置都不是真实的经纬度坐标,因此无法通过经纬度来定位城市。 @@ -103,9 +104,16 @@ services: ``` 建议通过docker-compose部署服务,然后通过cloudflare的tunnels向外提供服务,可以不用自己配置https证书。 **再次提示,哪吒V1的必须设置config.js中的nezhaVersion为v1** +**如果不想加载完整的内置库,可以使用cdn引用镜像** +例如:`ghcr.io/hi2shark/nazhua:latest`替换为`ghcr.io/hi2shark/nazhua:cdn` ### Nginx配置示例 ```nginx +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + server { listen 80; server_name nazhua.example.com; diff --git a/src/App.vue b/src/App.vue index 4642230..860ffbf 100644 --- a/src/App.vue +++ b/src/App.vue @@ -7,6 +7,8 @@