From e63583987e8a84d7a7d305854d8456cb8a8d7f30 Mon Sep 17 00:00:00 2001 From: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> Date: Tue, 24 Jun 2025 13:50:57 +0200 Subject: [PATCH] chore: Add build version as banner to outputted js and css chat files (no-changelog) (#16629) Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --- packages/frontend/@n8n/chat/vite.config.mts | 22 +++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/frontend/@n8n/chat/vite.config.mts b/packages/frontend/@n8n/chat/vite.config.mts index d8d5e8016e..262321473d 100644 --- a/packages/frontend/@n8n/chat/vite.config.mts +++ b/packages/frontend/@n8n/chat/vite.config.mts @@ -1,10 +1,11 @@ -import { defineConfig, mergeConfig } from 'vite'; +import { defineConfig, mergeConfig, PluginOption } from 'vite'; import { resolve } from 'path'; -import { renameSync } from 'fs'; +import { renameSync, writeFileSync, readFileSync } from 'fs'; import vue from '@vitejs/plugin-vue'; import icons from 'unplugin-icons/vite'; import dts from 'vite-plugin-dts'; import { vitestConfig } from '@n8n/vitest-config/frontend'; +import pkg from './package.json'; import iconsResolver from 'unplugin-icons/resolver'; import components from 'unplugin-vue-components/vite'; @@ -12,6 +13,8 @@ const includeVue = process.env.INCLUDE_VUE === 'true'; const srcPath = resolve(__dirname, 'src'); const packagesDir = resolve(__dirname, '..', '..', '..'); +const banner = `/*! Package version @n8n/chat@${pkg.version} */`; + // https://vitejs.dev/config/ export default mergeConfig( defineConfig({ @@ -49,6 +52,19 @@ export default mergeConfig( } }, }, + { + name: 'inject-build-version', + closeBundle() { + const cssPath = resolve(__dirname, 'dist', 'style.css'); + try { + const cssContent = readFileSync(cssPath, 'utf-8'); + const updatedCssContent = banner + '\n' + cssContent; + writeFileSync(cssPath, updatedCssContent, 'utf-8'); + } catch (error) { + console.error('Failed to inject build version into CSS file:', error); + } + }, + }, ], resolve: { alias: [ @@ -86,6 +102,8 @@ export default mergeConfig( external: includeVue ? [] : ['vue'], output: { exports: 'named', + // inject banner on top of all JS files + banner, // Provide global variables to use in the UMD build // for externalized deps globals: includeVue