Feature/migrate to vite (#349)

* Install dependencies

* Remove dependency react-scripts

* Remove dependency "@babel/plugin-proposal-private-property-in-object"

Was necessary to prevent a react-scripts warning.

* Update scripts in package.json

* Add vite config

* Move "public/index.html" to root folder

* Remove "%PUBLIC_URL%" occurrences

* Link "src/index.tsx" in "index.html"

* Update tsconfig target to "esnext"

* Target latest LTS node version (v18.16.0)

* Add "@types/node" dependency
This commit is contained in:
schroda
2023-06-05 00:58:21 +02:00
committed by GitHub
parent fa614a19d2
commit bc99728dcd
6 changed files with 310 additions and 6972 deletions

2
.nvmrc
View File

@@ -1 +1 @@
v16.19.1
v18.16.0

View File

@@ -2,33 +2,25 @@
<html>
<head>
<meta charset="utf-8"/>
<link rel="icon" href="%PUBLIC_URL%/favicon.ico"/>
<link rel="icon" href="/favicon.ico"/>
<meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width"/>
<meta name="theme-color" content="#000000"/>
<meta
name="description"
content="A manga reader that runs tachiyomi's extensions"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/favicon.png"/>
<link rel="apple-touch-icon" href="/favicon.png"/>
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json"/>
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<link rel="manifest" href="/manifest.json"/>
<title>Tachidesk</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="./src/index.tsx"></script>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.

View File

@@ -3,12 +3,11 @@
"version": "0.1.0",
"private": true,
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"start": "vite",
"build": "vite build",
"serve": "vite preview",
"build-md5": "find build -type f | sort | xargs md5sum | awk '{ print $1 }' | tr -d '\n' | md5sum| awk '{ print $1 }' > buildZip/md5sum ",
"build-zip": "cd build && rev=$(git rev-list HEAD --count) && echo r$rev > revision && zip -9 -r ../buildZip/Tachidesk-WebUI-r$rev *",
"test": "react-scripts test",
"eject": "react-scripts eject",
"lint": "eslint src --ext .ts,.tsx,.js,.jsx"
},
"browserslist": {
@@ -29,6 +28,8 @@
"@fontsource/roboto": "^5.0.2",
"@mui/icons-material": "^5.11.16",
"@mui/material": "^5.13.3",
"@types/node": "18.16.0",
"@vitejs/plugin-react": "^4.0.0",
"axios": "^1.4.0",
"file-selector": "^0.6.0",
"i18next": "^22.5.0",
@@ -38,14 +39,14 @@
"react-dom": "^18.2.0",
"react-i18next": "^12.3.1",
"react-router-dom": "^6.11.2",
"react-scripts": "^5.0.1",
"react-virtuoso": "^4.3.8",
"swr": "^2.1.5",
"use-query-params": "^2.2.1",
"vite": "^4.3.9",
"vite-tsconfig-paths": "^4.2.0",
"web-vitals": "^3.3.2"
},
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.10",
"@types/react": "^18.2.8",
"@types/react-beautiful-dnd": "^13.1.4",
"@types/react-dom": "^18.2.4",

View File

@@ -1,7 +1,7 @@
{
"compilerOptions": {
"baseUrl": "./src",
"target": "es2015",
"target": "ESNext",
"lib": [
"dom",
"dom.iterable",
@@ -22,6 +22,7 @@
"jsx": "react-jsx"
},
"include": [
"src"
"src",
"vite.config.ts"
]
}

21
vite.config.ts Normal file
View File

@@ -0,0 +1,21 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import viteTsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig(() => ({
build: {
outDir: 'build',
},
server: {
port: 3000,
},
plugins: [react(), viteTsconfigPaths()],
}));

7225
yarn.lock

File diff suppressed because it is too large Load Diff