From b42f2f310ab84763a409e4b6c91f2225abf517cc Mon Sep 17 00:00:00 2001 From: terwer Date: Wed, 21 Jun 2023 12:39:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=E4=BC=98=E5=8C=96=20docker=20?= =?UTF-8?q?=E6=89=93=E5=8C=85=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose-hub.yml | 2 +- docker-compose.yml | 2 +- docs.md | 4 ++-- scripts/build.sh | 2 +- scripts/dev.sh | 2 +- scripts/docker.sh | 18 ++++++++++++++++-- scripts/node.sh | 2 +- scripts/serve.sh | 2 +- scripts/vercel.sh | 2 +- utils/utils.ts | 2 +- 10 files changed, 26 insertions(+), 12 deletions(-) diff --git a/docker-compose-hub.yml b/docker-compose-hub.yml index fab9a995..9a4d36ec 100755 --- a/docker-compose-hub.yml +++ b/docker-compose-hub.yml @@ -1,7 +1,7 @@ version: '3' services: nuxt3-blog: - image: terwer/nuxt3-blog:1.3.0 + image: terwer/nuxt3-blog:latest ports: - "3000:3000" env_file: diff --git a/docker-compose.yml b/docker-compose.yml index 8bf97a46..f8da664d 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,4 +10,4 @@ services: - ./.env.docker restart: no user: nuxt3-blog - image: terwer/nuxt3-blog:1.3.0 \ No newline at end of file + image: terwer/nuxt3-blog:latest \ No newline at end of file diff --git a/docs.md b/docs.md index 87b13f00..24a227c6 100644 --- a/docs.md +++ b/docs.md @@ -60,7 +60,7 @@ pnpm nodeBuild 接着启动 node 服务器 ``` -node .output/server/index.mjs +NUXT_PUBLIC_DEFAULT_TYPE=siyuan node NUXT_PUBLIC_SIYUAN_API_URL=http://127.0.0.1:6806 node .output/server/index.mjs ``` 然后打开 @@ -74,7 +74,7 @@ http://localhost:3000 ``` pnpm nodeuild docker compose up --build --remove-orphans -docker push terwer/nuxt3-blog:1.3.0 +docker push terwer/nuxt3-blog:latest ``` 最简单的使用 diff --git a/scripts/build.sh b/scripts/build.sh index cad8b117..6120bea2 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,4 +1,4 @@ -#!/usr/bin/sh +#!/bin/bash # 使用 Siyuan 构建配置 echo "Using Siyuan build config as SSE and SPA build." diff --git a/scripts/dev.sh b/scripts/dev.sh index 6bb20ca2..3031e9da 100644 --- a/scripts/dev.sh +++ b/scripts/dev.sh @@ -1,4 +1,4 @@ -#!/usr/bin/sh +#!/bin/bash # 使用 Siyuan 构建配置 echo "Using Siyuan build config as SSE and SPA build." diff --git a/scripts/docker.sh b/scripts/docker.sh index 24edade8..772796a4 100644 --- a/scripts/docker.sh +++ b/scripts/docker.sh @@ -1,6 +1,20 @@ -#!/usr/bin/sh +#!/bin/bash # 使用 Docker 构建配置 echo "Using Docker build config as SSR build." + +APP_VERSION=1.3.0 + +# 兼容 node 的构建 pnpm nodeBuild -docker compose up --build \ No newline at end of file +docker compose up --build --remove-orphans + +# 复制一份 terwer/nuxt3-blog:latest 镜像,并将它打上最新版本的标签 +docker tag terwer/nuxt3-blog:latest terwer/nuxt3-blog:$APP_VERSION + +# 登录 Docker Hub +# docker login + +# 推送最新版本和 latest 标签 +docker push terwer/nuxt3-blog:latest +docker push terwer/nuxt3-blog:$APP_VERSION \ No newline at end of file diff --git a/scripts/node.sh b/scripts/node.sh index 91c207f5..37bfe32d 100644 --- a/scripts/node.sh +++ b/scripts/node.sh @@ -1,4 +1,4 @@ -#!/usr/bin/sh +#!/bin/bash # 使用 Node 构建配置 echo "Using Node build config as SSR build." diff --git a/scripts/serve.sh b/scripts/serve.sh index 828bf159..9146898a 100644 --- a/scripts/serve.sh +++ b/scripts/serve.sh @@ -1,4 +1,4 @@ -#!/usr/bin/sh +#!/bin/bash # 使用 Node 构建配置 echo "Using Node build config as SSR serve" diff --git a/scripts/vercel.sh b/scripts/vercel.sh index 7cade84b..3c84806b 100644 --- a/scripts/vercel.sh +++ b/scripts/vercel.sh @@ -1,4 +1,4 @@ -#!/usr/bin/sh +#!/bin/bash # 使用 Vercel 构建配置 echo "Using Vercel build config as SSR build." diff --git a/utils/utils.ts b/utils/utils.ts index a09de684..affd81ef 100644 --- a/utils/utils.ts +++ b/utils/utils.ts @@ -50,7 +50,7 @@ export const isUseSiyuanApi = () => { const env = useRuntimeConfig() // docker - 在 .env.docker 配置 NUXT_PUBLIC_DEFAULT_TYPE=siyuan // vercel - 在环境变量配置 NUXT_PUBLIC_DEFAULT_TYPE=siyuan - // node - 启动参数加 NUXT_PUBLIC_DEFAULT_TYPE=siyuan node NUXT_PUBLIC_SIYUAN_API_URL=http://127.0.0.1:6806 .output/server.,js + // node - 启动参数加 NUXT_PUBLIC_DEFAULT_TYPE=siyuan node NUXT_PUBLIC_SIYUAN_API_URL=http://127.0.0.1:6806 // 插件SPA(PC客户端) - nuxt.siyuan.config.ts 写死 NUXT_PUBLIC_DEFAULT_TYPE: siyuan // 插件SPA(Docker浏览器客户端)- nuxt.siyuan.config.ts 写死 NUXT_PUBLIC_DEFAULT_TYPE: siyuan // 插件SPA(本地客户端浏览器)- nuxt.siyuan.config.ts 写死 NUXT_PUBLIC_DEFAULT_TYPE: siyuan From f379a9d5ddae19b30a98865d227162ec9255d0c8 Mon Sep 17 00:00:00 2001 From: terwer Date: Wed, 21 Jun 2023 12:53:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9C=AA=E6=89=93?= =?UTF-8?q?=E5=BC=80=E6=B5=AE=E7=AA=97=E6=97=B6=E5=8F=AF=E8=83=BD=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nuxt.config.ts | 33 ++++++++++++++++++++++++++------- pages/share.vue | 5 +++-- siyuan/iframeEvent.ts | 4 ++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/nuxt.config.ts b/nuxt.config.ts index cc86dd5c..2e078519 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -9,7 +9,7 @@ const generateDynamicV = () => { } const isDev = process.env.NODE_ENV === "development" -const appBase = "/" +const appBase = "/plugins/siyuan-blog/" const staticV = generateDynamicV() // https://nuxt.com/docs/api/configuration/nuxt-config @@ -24,7 +24,14 @@ export default defineNuxtConfig({ }, // build modules - modules: ["@vueuse/nuxt", "@nuxtjs/i18n", "@element-plus/nuxt", "@nuxtjs/color-mode", "@pinia/nuxt", "@nuxt/image"], + modules: [ + "@vueuse/nuxt", + "@nuxtjs/i18n-edge", + "@element-plus/nuxt", + "@nuxtjs/color-mode", + "@pinia/nuxt", + "@nuxt/image", + ], // vueuse vueuse: { @@ -47,7 +54,7 @@ export default defineNuxtConfig({ define: { "process.env.DEV_MODE": `"${isDev}"`, "process.env.APP_BASE": `"${appBase}"`, - "process.env.SSR": `"true"`, + "process.env.SSR": `"false"`, }, plugins: [], }, @@ -58,6 +65,14 @@ export default defineNuxtConfig({ themes: ["dark"], }, + // https://nuxt.com/docs/guide/going-further/custom-routing#hash-mode-spa + ssr: false, + router: { + options: { + hashMode: true, + }, + }, + css: ["~/assets/siyuan/style.styl", "~/assets/siyuan/index.styl"], app: { @@ -94,11 +109,15 @@ export default defineNuxtConfig({ // 环境变量 runtimeConfig: { - siyuanAuthToken: process.env.NUXT_SIYUAN_AUTH_TOKEN, + // siyuanAuthToken: process.env.NUXT_SIYUAN_AUTH_TOKEN, + siyuanAuthToken: "", public: { - defaultType: process.env.NUXT_PUBLIC_DEFAULT_TYPE ?? "siyuan", - siyuanApiUrl: process.env.NUXT_PUBLIC_SIYUAN_API_URL ?? "http://127.0.0.1:6806", - waitTime: process.env.NUXT_PUBLIC_WAIT_TIME, + // defaultType: process.env.NUXT_PUBLIC_DEFAULT_TYPE, + defaultType: "siyuan", + // siyuanApiUrl: process.env.NUXT_PUBLIC_SIYUAN_API_URL, + siyuanApiUrl: "", + // waitTime: process.env.NUXT_PUBLIC_WAIT_TIME, + waitTime: "0", }, }, }) diff --git a/pages/share.vue b/pages/share.vue index 435627fd..2d8b111e 100644 --- a/pages/share.vue +++ b/pages/share.vue @@ -6,9 +6,10 @@ import { useShareOptionToggle } from "~/composables/useShareOptionToggle" import copy from "copy-to-clipboard" import { useSiyuanApi } from "~/composables/api/useSiyuanApi" import { PostStatusEnum } from "zhi-blog-api" -import { DateUtil, JsonUtil, StrUtil } from "zhi-common" +import { JsonUtil } from "zhi-common" import { useMethodAsync } from "~/composables/useMethodAsync" import { useMethod } from "~/composables/useMethod" +import { sendMessageToParent } from "~/utils/innerIframeEvent" const logger = createAppLogger("share-page") const { t } = useI18n() @@ -56,7 +57,7 @@ const { optionState, optionToggle } = useShareOptionToggle(formData.optionEnable // } const goHelp = async () => { - window.open("https://blog.terwer.space/docs") + window.open("https://blog.terwer.space/s/20230621001422-xsimx5v") } const copyWebLink = () => { diff --git a/siyuan/iframeEvent.ts b/siyuan/iframeEvent.ts index 718f510e..17b50d7d 100644 --- a/siyuan/iframeEvent.ts +++ b/siyuan/iframeEvent.ts @@ -74,6 +74,10 @@ export const registerIframeEvent = (pluginInstance: SiyuanBlog) => { // 监听 message 事件 window.addEventListener("message", (event) => { const iframe = document.getElementById(popContentIframeId) as HTMLIFrameElement + if (!iframe) { + logger.debug(`popContent not show, ignore`) + return + } // 判断是否是来自指定 iframe 的消息 if (event.source === iframe.contentWindow) { From bf179498a893c156511478dd7ccd46aa9728f09c Mon Sep 17 00:00:00 2001 From: terwer Date: Wed, 21 Jun 2023 13:23:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E8=87=AA=E5=AE=9A=E4=B9=89=E5=9F=9F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.config.ts | 2 ++ components/default/setting/Basic.vue | 5 +++++ locales/en_US.ts | 4 ++++ locales/zh_CN.ts | 4 ++++ pages/share.vue | 4 ++-- 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app.config.ts b/app.config.ts index cb3a37fb..75d429a4 100644 --- a/app.config.ts +++ b/app.config.ts @@ -27,6 +27,7 @@ type ThemeType = "system" | "dark" | "light" interface AppConfig { lang?: string + siteUrl?: string siteTitle?: string siteSlogan?: string siteDescription?: string @@ -44,6 +45,7 @@ interface AppConfig { export default defineAppConfig({ lang: "zh_CN", + siteUrl: "", siteTitle: "浅海拾贝", siteSlogan: "寻找未知的技术拼图", siteDescription: "专注于Java后端开发及服务端、软件架构、微服务、自然语言处理等领域的技术分享。", diff --git a/components/default/setting/Basic.vue b/components/default/setting/Basic.vue index 14ebc893..198db44c 100644 --- a/components/default/setting/Basic.vue +++ b/components/default/setting/Basic.vue @@ -41,6 +41,7 @@ useSeoMeta(seoMeta) // datas const formData = reactive({ + siteUrl: setting.siteUrl, homePageId: setting.homePageId, themes: { light: [ @@ -71,6 +72,7 @@ const formData = reactive({ // methods const onSubmit = async () => { try { + setting.siteUrl = formData.siteUrl setting.homePageId = formData.homePageId setting.theme ||= {} setting.theme.lightTheme = formData.lightTheme @@ -90,6 +92,9 @@ const onSubmit = async () => {