feat(vite): add HTTPS support with configurable SSL (#8585)

The Pull Request adds support for local HTTPS configuration and
introduces a new environment variable for the app's base URL.
- Added new environment variable REACT_APP_BASE_URL in .env.example.
- Introduced logic to utilize SSL certificates for local HTTPS in
vite.config.ts.
- Added validation to ensure SSL key and certificate paths are defined
for HTTPS.
- Included support for dynamic base URL setting based on the environment
configuration.
- Enhanced server configuration in vite.config.ts to handle HTTPS and
local development.

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
Antoine Moreaux
2024-11-21 14:22:00 +01:00
committed by GitHub
parent ae4fb7d113
commit 3f98c2ddbe
2 changed files with 22 additions and 3 deletions

View File

@ -5,4 +5,7 @@ GENERATE_SOURCEMAP=false
# REACT_APP_PORT=3001
# CHROMATIC_PROJECT_TOKEN=
# VITE_DISABLE_TYPESCRIPT_CHECKER=true
# VITE_DISABLE_ESLINT_CHECKER=true
# VITE_DISABLE_ESLINT_CHECKER=true
# VITE_ENABLE_SSL=false
# SSL_KEY_PATH="./certs/your-cert.key"
# SSL_CERT_PATH="./certs/your-cert.crt"

View File

@ -3,6 +3,7 @@ import { isNonEmptyString } from '@sniptt/guards';
import react from '@vitejs/plugin-react-swc';
import wyw from '@wyw-in-js/vite';
import path from 'path';
import fs from 'fs';
import { defineConfig, loadEnv, searchForWorkspaceRoot } from 'vite';
import checker from 'vite-plugin-checker';
import svgr from 'vite-plugin-svgr';
@ -18,6 +19,7 @@ export default defineConfig(({ command, mode }) => {
VITE_BUILD_SOURCEMAP,
VITE_DISABLE_TYPESCRIPT_CHECKER,
VITE_DISABLE_ESLINT_CHECKER,
VITE_ENABLE_SSL,
REACT_APP_PORT,
} = env;
@ -62,13 +64,27 @@ export default defineConfig(({ command, mode }) => {
};
}
if (VITE_ENABLE_SSL && (!env.SSL_KEY_PATH || !env.SSL_CERT_PATH)) {
throw new Error(
'to use https SSL_KEY_PATH and SSL_CERT_PATH must be both defined',
);
}
return {
root: __dirname,
cacheDir: '../../node_modules/.vite/packages/twenty-front',
server: {
port,
host: 'localhost',
port: port,
protocol: VITE_ENABLE_SSL ? 'https' : 'http',
...(VITE_ENABLE_SSL
? {
https: {
key: fs.readFileSync(env.SSL_KEY_PATH),
cert: fs.readFileSync(env.SSL_CERT_PATH),
},
}
: {}),
fs: {
allow: [
searchForWorkspaceRoot(process.cwd()),