From 74ea8444a97507534bd879e0f48b4cacad23fd14 Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Wed, 24 Apr 2024 17:37:17 +0200 Subject: [PATCH] Maintenance: Add preserve symlinks to support package linking in development environments. Co-authored-by: Dominik Klein --- vite.config.mjs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/vite.config.mjs b/vite.config.mjs index 36f8e83d945e..e3c1f7134670 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -17,6 +17,17 @@ const dir = dirname(fileURLToPath(import.meta.url)) const SSL_PATH = resolve(homedir(), '.local/state/localhost.rb') +const isEnvBooleanSet = (value) => { + if (value === 'true' || value === '1') { + return true; + } + else if (value === 'false' || value === '0') { + return false; + } + + return false; +} + // eslint-disable-next-line sonarjs/cognitive-complexity export default defineConfig(({ mode, command }) => { const isTesting = ['test', 'cypress'].includes(mode) @@ -29,7 +40,7 @@ export default defineConfig(({ mode, command }) => { template: { compilerOptions: { nodeTransforms: - isTesting || !!process.env.VITE_TEST_MODE + isTesting || isEnvBooleanSet(process.env.VITE_TEST_MODE) ? [] : [require('./app/frontend/build/transforms/transformTestId.js')], }, @@ -45,7 +56,7 @@ export default defineConfig(({ mode, command }) => { plugins.push( ...VitePWA({ - disable: isTesting || !!process.env.VITE_TEST_MODE, + disable: isTesting || isEnvBooleanSet(process.env.VITE_TEST_MODE), // should be generated on ruby side manifest: false, registerType: 'prompt', @@ -62,7 +73,7 @@ export default defineConfig(({ mode, command }) => { let https = false // vite-ruby controlls this variable, it's either "true" or "false" - if (process.env.VITE_RUBY_HTTPS === 'true') { + if (isEnvBooleanSet(process.env.VITE_RUBY_HTTPS)) { const SSL_CERT = readFileSync(resolve(SSL_PATH, 'localhost.crt')) const SSL_KEY = readFileSync(resolve(SSL_PATH, 'localhost.key')) @@ -84,6 +95,7 @@ export default defineConfig(({ mode, command }) => { target: isTesting ? 'esnext' : tsconfig.compilerOptions.target, }, resolve: { + preserveSymlinks: isEnvBooleanSet(process.env.PRESERVE_SYMLINKS), alias: { '^vue-easy-lightbox$': 'vue-easy-lightbox/dist/external-css/vue-easy-lightbox.esm.min.js', @@ -104,7 +116,7 @@ export default defineConfig(({ mode, command }) => { }, }, define: { - VITE_TEST_MODE: !!process.env.VITEST || !!process.env.VITE_TEST_MODE, + VITE_TEST_MODE: isEnvBooleanSet(process.env.VITEST) || isEnvBooleanSet(process.env.VITE_TEST_MODE), }, test: { globals: true, @@ -114,7 +126,7 @@ export default defineConfig(({ mode, command }) => { environment: 'jsdom', clearMocks: true, css: false, - testTimeout: process.env.CI ? 30_000 : 5_000, + testTimeout: isEnvBooleanSet(process.env.CI) ? 30_000 : 5_000, unstubGlobals: true, onConsoleLog(log) { if (log.includes('Not implemented: navigation')) return false