From acf7bc89a3d3d660bd58c9fc90cb6c22dbd4a634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christophe=20No=C3=ABl?= Date: Mon, 4 Mar 2024 22:03:02 +0100 Subject: [PATCH 1/4] Get base config from environment variables --- .eslintrc.js | 2 +- .gitignore | 1 + packages/chord-chart-studio/.env.template | 1 + .../chord-chart-studio/src/core/config.js | 3 + .../chord-chart-studio/src/core/router.js | 4 +- .../src/modules/allRoutes.js | 2 +- packages/chord-chart-studio/vite.config.js | 106 +++++++++--------- 7 files changed, 65 insertions(+), 54 deletions(-) create mode 100644 packages/chord-chart-studio/.env.template create mode 100644 packages/chord-chart-studio/src/core/config.js diff --git a/.eslintrc.js b/.eslintrc.js index 15418c0..8342685 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -17,7 +17,7 @@ module.exports = { SharedArrayBuffer: 'readonly', }, parserOptions: { - ecmaVersion: 2018, + ecmaVersion: 2020, sourceType: 'module', jsx: true, }, diff --git a/.gitignore b/.gitignore index 200066b..5a32a9f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules coverage **/build/report.html +.env # IDE files .idea/**/workspace.xml diff --git a/packages/chord-chart-studio/.env.template b/packages/chord-chart-studio/.env.template new file mode 100644 index 0000000..451566a --- /dev/null +++ b/packages/chord-chart-studio/.env.template @@ -0,0 +1 @@ +VITE_BASE=/app \ No newline at end of file diff --git a/packages/chord-chart-studio/src/core/config.js b/packages/chord-chart-studio/src/core/config.js new file mode 100644 index 0000000..14ac200 --- /dev/null +++ b/packages/chord-chart-studio/src/core/config.js @@ -0,0 +1,3 @@ +export default { + base: import.meta.env.VITE_BASE || '', +}; diff --git a/packages/chord-chart-studio/src/core/router.js b/packages/chord-chart-studio/src/core/router.js index deea994..075da9d 100644 --- a/packages/chord-chart-studio/src/core/router.js +++ b/packages/chord-chart-studio/src/core/router.js @@ -4,7 +4,7 @@ import qs from 'qs'; import renderController from '../renderController'; -const base = '/app'; // duh! +import config from './config'; let router; let getUrl; @@ -14,7 +14,7 @@ export default { const allRoutesWithWrappedActions = allRoutes.map((route) => { return { ...route, - path: base + route.path, + path: config.base + route.path, action: (context) => ({ Controller: route.action, params: context.params, diff --git a/packages/chord-chart-studio/src/modules/allRoutes.js b/packages/chord-chart-studio/src/modules/allRoutes.js index 70d96fe..f9c86d6 100644 --- a/packages/chord-chart-studio/src/modules/allRoutes.js +++ b/packages/chord-chart-studio/src/modules/allRoutes.js @@ -5,7 +5,7 @@ import Editor from '../controllers/Editor'; export default [ { name: 'home', - path: '/', + path: '', action: Editor, }, ...libraryRoutes, diff --git a/packages/chord-chart-studio/vite.config.js b/packages/chord-chart-studio/vite.config.js index 8af67c9..8bb794b 100644 --- a/packages/chord-chart-studio/vite.config.js +++ b/packages/chord-chart-studio/vite.config.js @@ -1,60 +1,66 @@ -import { defineConfig } from 'vite'; +/* eslint-env node */ +import { defineConfig, loadEnv } from 'vite'; import react from '@vitejs/plugin-react'; import { VitePWA } from 'vite-plugin-pwa'; -export default defineConfig({ - root: 'src', - publicDir: '../public', - base: '/app/', - build: { - outDir: '../build', - emptyOutDir: true, - rollupOptions: { - output: { - manualChunks: (id) => { - if (id.includes('node_modules')) { - return 'vendor'; - } +export default defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd(), ''); + console.log(env.VITE_BASE); + return { + root: 'src', + publicDir: '../public', + envDir: '../', + base: env.VITE_BASE, + build: { + outDir: '../build', + emptyOutDir: true, + rollupOptions: { + output: { + manualChunks: (id) => { + if (id.includes('node_modules')) { + return 'vendor'; + } + }, }, }, }, - }, - plugins: [ - react(), - VitePWA({ - registerType: 'autoUpdate', - injectRegister: 'script', - manifest: false, - workbox: { - clientsClaim: true, - skipWaiting: true, - globPatterns: ['**/*.{js,css,html,svg}'], - runtimeCaching: [ - // based on https://developer.chrome.com/docs/workbox/modules/workbox-recipes - // and https://stackoverflow.com/questions/52451678/caching-google-fonts-using-workbox - { - urlPattern: /^https:\/\/fonts\.googleapis\.com/, - handler: 'StaleWhileRevalidate', - options: { - cacheName: 'google-fonts-stylesheets', - }, - }, - { - urlPattern: /^https:\/\/fonts\.gstatic\.com/, - handler: 'StaleWhileRevalidate', - options: { - cacheName: 'google-fonts-webfonts', - cacheableResponse: { - statuses: [0, 200], + plugins: [ + react(), + VitePWA({ + registerType: 'autoUpdate', + injectRegister: 'script', + manifest: false, + workbox: { + clientsClaim: true, + skipWaiting: true, + globPatterns: ['**/*.{js,css,html,svg}'], + runtimeCaching: [ + // based on https://developer.chrome.com/docs/workbox/modules/workbox-recipes + // and https://stackoverflow.com/questions/52451678/caching-google-fonts-using-workbox + { + urlPattern: /^https:\/\/fonts\.googleapis\.com/, + handler: 'StaleWhileRevalidate', + options: { + cacheName: 'google-fonts-stylesheets', }, - expiration: { - maxAgeSeconds: 60 * 60 * 24 * 365, - maxEntries: 30, + }, + { + urlPattern: /^https:\/\/fonts\.gstatic\.com/, + handler: 'StaleWhileRevalidate', + options: { + cacheName: 'google-fonts-webfonts', + cacheableResponse: { + statuses: [0, 200], + }, + expiration: { + maxAgeSeconds: 60 * 60 * 24 * 365, + maxEntries: 30, + }, }, }, - }, - ], - }, - }), - ], + ], + }, + }), + ], + }; }); From ad17ce790ddebd6fa63a309a972468222fe36e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christophe=20No=C3=ABl?= Date: Mon, 4 Mar 2024 22:04:39 +0100 Subject: [PATCH 2/4] remove console.log --- packages/chord-chart-studio/vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/chord-chart-studio/vite.config.js b/packages/chord-chart-studio/vite.config.js index 8bb794b..fa1f111 100644 --- a/packages/chord-chart-studio/vite.config.js +++ b/packages/chord-chart-studio/vite.config.js @@ -5,7 +5,7 @@ import { VitePWA } from 'vite-plugin-pwa'; export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); - console.log(env.VITE_BASE); + return { root: 'src', publicDir: '../public', From b2ded687cf5b6065733797f5d097c4859bf0215e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christophe=20No=C3=ABl?= Date: Mon, 4 Mar 2024 22:04:56 +0100 Subject: [PATCH 3/4] add empty line --- packages/chord-chart-studio/.env.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/chord-chart-studio/.env.template b/packages/chord-chart-studio/.env.template index 451566a..5595535 100644 --- a/packages/chord-chart-studio/.env.template +++ b/packages/chord-chart-studio/.env.template @@ -1 +1 @@ -VITE_BASE=/app \ No newline at end of file +VITE_BASE=/app From d71d9d708c40cce4828be08cf6c7e05f93bee5b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christophe=20No=C3=ABl?= Date: Mon, 4 Mar 2024 22:50:12 +0100 Subject: [PATCH 4/4] fix path in unit tests --- packages/chord-chart-studio/src/core/__mocks__/config.js | 1 + packages/chord-chart-studio/tests/integration/app.spec.js | 2 ++ packages/chord-chart-studio/tests/unit/core/router.spec.js | 1 + 3 files changed, 4 insertions(+) create mode 100644 packages/chord-chart-studio/src/core/__mocks__/config.js diff --git a/packages/chord-chart-studio/src/core/__mocks__/config.js b/packages/chord-chart-studio/src/core/__mocks__/config.js new file mode 100644 index 0000000..6412902 --- /dev/null +++ b/packages/chord-chart-studio/src/core/__mocks__/config.js @@ -0,0 +1 @@ +export default { base: '' }; diff --git a/packages/chord-chart-studio/tests/integration/app.spec.js b/packages/chord-chart-studio/tests/integration/app.spec.js index e566559..b142f28 100644 --- a/packages/chord-chart-studio/tests/integration/app.spec.js +++ b/packages/chord-chart-studio/tests/integration/app.spec.js @@ -1,3 +1,5 @@ +jest.mock('../../src/core/config'); + import run from '../../src/app'; const { act } = require('@testing-library/react'); diff --git a/packages/chord-chart-studio/tests/unit/core/router.spec.js b/packages/chord-chart-studio/tests/unit/core/router.spec.js index b55a8ab..bf0d554 100644 --- a/packages/chord-chart-studio/tests/unit/core/router.spec.js +++ b/packages/chord-chart-studio/tests/unit/core/router.spec.js @@ -1,3 +1,4 @@ +jest.mock('../../../src/core/config'); jest.mock('../../../src/renderController'); import renderController from '../../../src/renderController';