From 7b8e364f6eedee666d493f2af10eb00441a1d29c Mon Sep 17 00:00:00 2001 From: Vasilii Mikhailovskii Date: Mon, 2 Dec 2024 16:08:02 +0200 Subject: [PATCH] add Brotli to ci/cd --- .gitea/workflows/deploy.yaml | 10 +++++ apps/frontend/components.d.ts | 5 +++ .../manage/ManagePlacementInstructions.vue | 3 +- apps/frontend/vite.config.ts | 42 +++++++++++-------- 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index abb1716..388fe81 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -21,6 +21,10 @@ jobs: - uses: actions/setup-node@v4 with: node-version: '22' + - name: install zopfli & brotli + run: | + sudo apt update + sudo apt install -y zopfli brotli - name: install dependencies run: | corepack enable @@ -29,6 +33,12 @@ jobs: - name: build production run: cd build/frontend && npm run build-only -- --emptyOutDir --outDir /www/hereconnect.condev.ru/build-${{env.GITHUB_SHA}}-prod/ + - name: compress production with Brotli + run: | + find /www/hereconnect.condev.ru/build-${{env.GITHUB_SHA}}-prod/ -type f \( -name '*.js' -o -name '*.css' -o -name '*.html' -o -name '*.svg' -o -name '*.eot' -o -name '*.ttf' -o -name '*.woff' -o -name '*.woff2' \) | while read -r file; do + brotli -k -q 11 "$file" + done + - name: deploy production run: mv -v /www/hereconnect.condev.ru/current-prod /www/hereconnect.condev.ru/old-prod && mv -v /www/hereconnect.condev.ru/build-${{env.GITHUB_SHA}}-prod /www/hereconnect.condev.ru/current-prod && rm -rf /www/hereconnect.condev.ru/old-prod diff --git a/apps/frontend/components.d.ts b/apps/frontend/components.d.ts index 2689b14..814b592 100644 --- a/apps/frontend/components.d.ts +++ b/apps/frontend/components.d.ts @@ -8,8 +8,10 @@ export {} declare module 'vue' { export interface GlobalComponents { Button: typeof import('primevue/button')['default'] + Card: typeof import('primevue/card')['default'] ChatComponent: typeof import('./src/components/ChatComponent.vue')['default'] ChatSubscribeWebPush: typeof import('./src/components/ChatSubscribeWebPush.vue')['default'] + Checkbox: typeof import('primevue/checkbox')['default'] CreateActionsSection: typeof import('./src/components/create/CreateActionsSection.vue')['default'] CreateMessageDeliveryMethodSection: typeof import('./src/components/create/CreateMessageDeliveryMethodSection.vue')['default'] CreateMessageDeliveryOption: typeof import('./src/components/create/CreateMessageDeliveryOption.vue')['default'] @@ -23,8 +25,11 @@ declare module 'vue' { CreateSummarySection: typeof import('./src/components/create/CreateSummarySection.vue')['default'] DownloadImageButton: typeof import('./src/components/manage/DownloadImageButton.vue')['default'] ExamplesSection: typeof import('./src/components/TheWelcome/ExamplesSection.vue')['default'] + InputText: typeof import('primevue/inputtext')['default'] ManagePlacementInstructions: typeof import('./src/components/manage/ManagePlacementInstructions.vue')['default'] + ProgressSpinner: typeof import('primevue/progressspinner')['default'] QueryRender: typeof import('./src/components/QueryRender.vue')['default'] + RadioButton: typeof import('primevue/radiobutton')['default'] ReadContactInfo: typeof import('./src/components/read/ReadContactInfo.vue')['default'] ReadMessageSender: typeof import('./src/components/read/ReadMessageSender.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/apps/frontend/src/components/manage/ManagePlacementInstructions.vue b/apps/frontend/src/components/manage/ManagePlacementInstructions.vue index f144107..f0bc4a7 100644 --- a/apps/frontend/src/components/manage/ManagePlacementInstructions.vue +++ b/apps/frontend/src/components/manage/ManagePlacementInstructions.vue @@ -17,7 +17,8 @@ import { type QRCodeDocument } from '@hereconnect/types' // Импортируем все инструкции из директории const importInstructions = import.meta.glob('/src/content/placementInstructions/*.md', { - as: 'raw', + query: '?raw', + import: 'default', }) as unknown as Record Promise> const { placement } = defineProps<{ placement: QRCodeDocument['placement'] }>() diff --git a/apps/frontend/vite.config.ts b/apps/frontend/vite.config.ts index 1b15368..5512a8a 100644 --- a/apps/frontend/vite.config.ts +++ b/apps/frontend/vite.config.ts @@ -9,23 +9,29 @@ import AutoImport from 'unplugin-auto-import/vite' import { unheadComposablesImports } from 'unhead' // https://vite.dev/config/ -export default defineConfig({ - plugins: [ - vue(), - AutoImport({ - imports: ['vue', 'vue-router', unheadComposablesImports[0]], - }), - Components({ - resolvers: [PrimeVueResolver()], - }), - vueDevTools(), - ], - define: { - global: 'window', // it is needed for PouchDB - }, - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)), +export default defineConfig(({ mode }) => { + console.log('Building in mode', mode) + return { + build: { + sourcemap: mode === 'development', }, - }, + plugins: [ + vue(), + AutoImport({ + imports: ['vue', 'vue-router', unheadComposablesImports[0]], + }), + Components({ + resolvers: [PrimeVueResolver()], + }), + vueDevTools(), + ], + define: { + global: 'window', // it is needed for PouchDB + }, + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, + } })