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 @@