Migrate to Vite (#441)

This commit is contained in:
Piotr Rogowski 2022-02-24 00:01:52 +01:00 committed by GitHub
parent 58b5f187f7
commit 2d036f1277
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 6423 additions and 1136 deletions

22
.env
View File

@ -1,12 +1,12 @@
NPM_GITHUB_TOKEN= NPM_GITHUB_TOKEN=
REACT_APP_WEB_URL=http://localhost:3000 VITE_WEB_URL=http://localhost:3000
REACT_APP_SENTRY_DSN= VITE_SENTRY_DSN=
REACT_APP_FIREBASE_APP_SENTRY_DSN= VITE_FIREBASE_APP_SENTRY_DSN=
REACT_APP_FIREBASE_API_KEY= VITE_FIREBASE_API_KEY=
REACT_APP_FIREBASE_AUTH_DOMAIN= VITE_FIREBASE_AUTH_DOMAIN=
REACT_APP_FIREBASE_PROJECT_ID= VITE_FIREBASE_PROJECT_ID=
REACT_APP_FIREBASE_STORAGE_BUCKET= VITE_FIREBASE_STORAGE_BUCKET=
REACT_APP_FIREBASE_MESSAGING_SENDER_ID= VITE_FIREBASE_MESSAGING_SENDER_ID=
REACT_APP_FIREBASE_APP_ID= VITE_FIREBASE_APP_ID=
REACT_APP_FIREBASE_MEASUREMENT_ID= VITE_FIREBASE_MEASUREMENT_ID=
REACT_APP_CDN_URL= VITE_CDN_URL=

View File

@ -1,3 +1,7 @@
{ {
"typescript.tsdk": "node_modules/typescript/lib" "typescript.tsdk": "node_modules/typescript/lib",
"cSpell.words": [
"vite",
"vitejs"
]
} }

View File

@ -2,11 +2,11 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/icons/icon.ico" /> <link rel="icon" href="/icons/icon.ico" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1" /> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1" />
<meta name="theme-color" content="#222629" /> <meta name="theme-color" content="#222629" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/icons/icon.png" /> <link rel="apple-touch-icon" href="/icons/icon.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> <link rel="manifest" href="/manifest.json" />
<link rel="preconnect" href="https://apis.google.com" crossorigin> <link rel="preconnect" href="https://apis.google.com" crossorigin>
<meta property="og:title" content="SpeedyTuner Cloud"> <meta property="og:title" content="SpeedyTuner Cloud">
<meta name="twitter:image:alt" content="SpeedyTuner Cloud"> <meta name="twitter:image:alt" content="SpeedyTuner Cloud">
@ -22,5 +22,7 @@
<body style="background-color: #222629;"> <body style="background-color: #222629;">
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div> <div id="root"></div>
<!-- Vite entrypoint -->
<script type="module" src="/src/index.tsx"></script>
</body> </body>
</html> </html>

7386
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -11,25 +11,11 @@
"url": "https://github.com/speedy-tuner/speedy-tuner-cloud" "url": "https://github.com/speedy-tuner/speedy-tuner-cloud"
}, },
"scripts": { "scripts": {
"start": "craco start", "start": "vite",
"build": "craco build", "build": "tsc && vite build",
"build:stats": "craco build --stats", "serve": "vite preview",
"test": "craco test",
"lint": "tsc && eslint --max-warnings=0 src", "lint": "tsc && eslint --max-warnings=0 src",
"lint:fix": "eslint --fix src", "lint:fix": "eslint --fix src"
"analyze": "source-map-explorer 'build/static/js/*.js'"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}, },
"dependencies": { "dependencies": {
"@reduxjs/toolkit": "^1.7.2", "@reduxjs/toolkit": "^1.7.2",
@ -38,9 +24,8 @@
"@speedy-tuner/ini": "^0.3.0", "@speedy-tuner/ini": "^0.3.0",
"@speedy-tuner/types": "^0.3.0", "@speedy-tuner/types": "^0.3.0",
"antd": "^4.18.8", "antd": "^4.18.8",
"craco-less": "^2.0.0",
"firebase": "^9.6.7", "firebase": "^9.6.7",
"kbar": "^0.1.0-beta.27", "kbar": "^0.1.0-beta.28",
"mlg-converter": "^0.5.1", "mlg-converter": "^0.5.1",
"nanoid": "^3.3.1", "nanoid": "^3.3.1",
"pako": "^2.0.4", "pako": "^2.0.4",
@ -50,9 +35,9 @@
"react-perfect-scrollbar": "^1.5.8", "react-perfect-scrollbar": "^1.5.8",
"react-redux": "^7.2.6", "react-redux": "^7.2.6",
"react-router-dom": "^6.2.1", "react-router-dom": "^6.2.1",
"react-scripts": "^5.0.0",
"uplot": "^1.6.19", "uplot": "^1.6.19",
"uplot-react": "^1.1.1" "uplot-react": "^1.1.1",
"vite": "^2.8.4"
}, },
"devDependencies": { "devDependencies": {
"@craco/craco": "^7.0.0-7.0.0-alpha.2.0", "@craco/craco": "^7.0.0-7.0.0-alpha.2.0",
@ -63,12 +48,11 @@
"@types/react-dom": "^17.0.11", "@types/react-dom": "^17.0.11",
"@types/react-redux": "^7.1.22", "@types/react-redux": "^7.1.22",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",
"@vitejs/plugin-react": "^1.2.0",
"eslint-plugin-modules-newline": "^0.0.6", "eslint-plugin-modules-newline": "^0.0.6",
"eslint-plugin-prettier": "^4.0.0", "eslint-plugin-prettier": "^4.0.0",
"less-loader": "^6.1.0", "less": "^4.1.2",
"prettier": "^2.5.1", "prettier": "^2.5.1",
"source-map-explorer": "^2.5.2", "typescript": "^4.5.5"
"typescript": "^4.5.5",
"worker-loader": "^3.0.8"
} }
} }

0
src/@types/.gitkeep Normal file
View File

View File

@ -1,10 +0,0 @@
declare module 'worker-loader!*' {
// You need to change `Worker`, if you specified a different value for the `workerType` option
class WebpackWorker extends Worker {
constructor();
}
// Uncomment this if you set the `esModule` option to `false`
// export = WebpackWorker;
export default WebpackWorker;
}

View File

@ -1,5 +1,5 @@
@import '~antd/dist/antd.less'; @import 'antd/dist/antd.less';
// @import '~antd/dist/antd.compact.less'; // @import 'antd/dist/antd.compact.less';
// @import './themes/light.less'; // @import './themes/light.less';
@import './themes/dark.less'; @import './themes/dark.less';
@import './themes/common.less'; @import './themes/common.less';

View File

@ -4,13 +4,13 @@ import { getAuth } from 'firebase/auth';
import { getAnalytics } from 'firebase/analytics'; import { getAnalytics } from 'firebase/analytics';
const firebaseConfig = { const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_API_KEY, apiKey: import.meta.env.VITE_FIREBASE_API_KEY as string,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN, authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN as string,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID, projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID as string,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET, storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET as string,
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID, messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID as string,
appId: process.env.REACT_APP_FIREBASE_APP_ID, appId: import.meta.env.VITE_FIREBASE_APP_ID as string,
measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID, measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID as string,
}; };
const app = initializeApp(firebaseConfig); const app = initializeApp(firebaseConfig);

View File

@ -12,7 +12,7 @@ import {
const PUBLIC_PATH = 'public'; const PUBLIC_PATH = 'public';
const USERS_PATH = `${PUBLIC_PATH}/users`; const USERS_PATH = `${PUBLIC_PATH}/users`;
const INI_PATH = `${PUBLIC_PATH}/ini`; const INI_PATH = `${PUBLIC_PATH}/ini`;
export const CDN_URL = process.env.REACT_APP_CDN_URL; export const CDN_URL = import.meta.env.VITE_CDN_URL;
const storage = getStorage(); const storage = getStorage();

View File

@ -15,10 +15,10 @@ import CommandPalette from './components/CommandPalette';
if (isProduction) { if (isProduction) {
Sentry.init({ Sentry.init({
dsn: sentryDsn, dsn: sentryDsn as string,
integrations: [new Integrations.BrowserTracing()], integrations: [new Integrations.BrowserTracing()],
tracesSampleRate: 0.2, tracesSampleRate: 0.2,
environment, environment: environment as string,
}); });
} }

View File

@ -1,4 +1,3 @@
/* eslint-disable import/no-webpack-loader-syntax */
import { import {
useCallback, useCallback,
useEffect, useEffect,
@ -26,8 +25,6 @@ import useBreakpoint from 'antd/lib/grid/hooks/useBreakpoint';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Result as ParserResult } from 'mlg-converter/dist/types'; import { Result as ParserResult } from 'mlg-converter/dist/types';
import PerfectScrollbar from 'react-perfect-scrollbar'; import PerfectScrollbar from 'react-perfect-scrollbar';
// eslint-disable-next-line import/no-unresolved
import MlgParserWorker from 'worker-loader!../workers/mlgParser.worker';
import { import {
Config, Config,
OutputChannel, OutputChannel,
@ -35,6 +32,8 @@ import {
DatalogEntry, DatalogEntry,
Tune as TuneType, Tune as TuneType,
} from '@speedy-tuner/types'; } from '@speedy-tuner/types';
// eslint-disable-next-line import/no-unresolved
import MlgParserWorker from '../workers/mlgParser?worker';
import { loadLogs } from '../utils/api'; import { loadLogs } from '../utils/api';
import LogCanvas from '../components/Logs/LogCanvas'; import LogCanvas from '../components/Logs/LogCanvas';
import store from '../store'; import store from '../store';

View File

@ -1 +0,0 @@
/// <reference types="react-scripts" />

View File

@ -1,8 +1,6 @@
export const isWeb = process.env.APP_PLATFORM === 'web';
export const isDesktop = process.env.APP_PLATFORM === 'desktop';
export const isMac = `${window.navigator.platform}`.includes('Mac'); export const isMac = `${window.navigator.platform}`.includes('Mac');
export const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; export const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
export const environment = process.env.NODE_ENV || 'development'; export const environment = import.meta.env.NODE_ENV || 'development';
export const isProduction = environment === 'production'; export const isProduction = environment === 'production';
export const sentryDsn = process.env.REACT_APP_SENTRY_DSN; export const sentryDsn = import.meta.env.VITE_SENTRY_DSN;
export const platform = `${window.navigator.platform}`; export const platform = `${window.navigator.platform}`;

View File

@ -1,2 +1,2 @@
// eslint-disable-next-line import/prefer-default-export // eslint-disable-next-line import/prefer-default-export
export const generateShareUrl = (tuneId: string) => `${process.env.REACT_APP_WEB_URL}/#/t/${tuneId}`; export const generateShareUrl = (tuneId: string) => `${import.meta.env.VITE_WEB_URL}/#/t/${tuneId}`;

1
src/vite-env.d.ts vendored Normal file
View File

@ -0,0 +1 @@
/// <reference types="vite/client" />

View File

@ -1,27 +1,30 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "ES6", "target": "ESNext",
"lib": [ "lib": [
"dom", "DOM",
"dom.iterable", "DOM.Iterable",
"esnext" "ESNext"
], ],
"allowJs": true, "allowJs": false,
"skipLibCheck": true, "skipLibCheck": true,
"esModuleInterop": true, "esModuleInterop": false,
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"strict": true, "strict": true,
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true, "module": "ESNext",
"module": "esnext", "moduleResolution": "Node",
"moduleResolution": "node",
"resolveJsonModule": true, "resolveJsonModule": true,
"isolatedModules": true, "isolatedModules": true,
"noEmit": true, "noEmit": true,
"removeComments": true,
"jsx": "react-jsx" "jsx": "react-jsx"
}, },
"include": [ "include": [
"src" "src"
], ],
"references": [
{
"path": "./tsconfig.node.json"
}
]
} }

8
tsconfig.node.json Normal file
View File

@ -0,0 +1,8 @@
{
"compilerOptions": {
"composite": true,
"module": "esnext",
"moduleResolution": "node"
},
"include": ["vite.config.ts"]
}

View File

@ -1,5 +0,0 @@
{
"github": {
"silent": true
}
}

16
vite.config.ts Normal file
View File

@ -0,0 +1,16 @@
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
// https://vitejs.dev/config/
export default defineConfig({
// This changes the out put dir from dist to build
build: { outDir: 'build' },
css: {
preprocessorOptions: {
less: { javascriptEnabled: true },
},
},
plugins: [
react(),
],
});