mirror of
https://github.com/chatwoot/chatwoot.git
synced 2026-06-04 21:02:35 +08:00
Upgrades the frontend toolchain to Vite 6 and tidies up the build config along the way. Behavior is unchanged for end users; this is dev/build infra. ## What changed - `vite` 5.4 → 6.4, `@vitejs/plugin-vue` → 5.2, `vite-plugin-ruby` → 5.2 (with matching `vite_rails`/`vite_ruby` gem bumps). - Dropped the `vite-node` 2.0.1 pnpm override — no longer needed now that vitest 3 runs on Vite 6 directly. - Split the single `vite.config.ts` into: - `vite.config.ts` (app), `vite.lib.config.ts` (SDK), `vite.shared.ts` (aliases / Vue options), `vitest.config.ts` (tests). - `pnpm build:sdk` now selects the SDK config explicitly instead of branching on `BUILD_MODE=library`. SDK output path is unchanged (`public/packs/js/sdk.js`). No changes needed to Docker images, deployment scripts, or CI — Node 24 and pnpm 10 are already past Vite 6's floor, and the rake `assets:precompile` hook still drives the SDK build via `pnpm`. ## How to test - `pnpm dev` and verify the dashboard, widget, and survey routes load and HMR works. - Load a Chatwoot site widget on a test page and confirm `sdk.js` is served and the widget mounts. - `RAILS_ENV=production bundle exec rake assets:precompile` and confirm `public/packs/js/sdk.js` plus the rest of the manifest are produced. - `pnpm test` for the JS suite. --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Sony Mathew <2040199+sony-mathew@users.noreply.github.com>
34 lines
952 B
TypeScript
34 lines
952 B
TypeScript
/*
|
|
* SDK library build.
|
|
*
|
|
* vite-plugin-ruby pulls every entrypoint as input, but the SDK needs to ship
|
|
* as a single IIFE file (`inlineDynamicImports: true`), which is incompatible
|
|
* with multiple entrypoints. So the SDK gets its own pipeline:
|
|
*
|
|
* vite build --config vite.lib.config.ts → public/packs/js/sdk.js
|
|
*
|
|
* The `assets:precompile` rake task runs this alongside the main app build.
|
|
*/
|
|
import { defineConfig } from 'vite';
|
|
import path from 'path';
|
|
import { aliases } from './vite.shared';
|
|
|
|
export default defineConfig({
|
|
build: {
|
|
rollupOptions: {
|
|
output: {
|
|
dir: 'public/packs',
|
|
entryFileNames: chunkInfo =>
|
|
chunkInfo.name === 'sdk' ? 'js/sdk.js' : '[name].js',
|
|
inlineDynamicImports: true,
|
|
},
|
|
},
|
|
lib: {
|
|
entry: path.resolve(__dirname, './app/javascript/entrypoints/sdk.js'),
|
|
formats: ['iife'],
|
|
name: 'sdk',
|
|
},
|
|
},
|
|
resolve: { alias: aliases },
|
|
});
|