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> <html>
<head> <head>
<meta charset="utf-8"/> <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="viewport" content="minimum-scale=1, initial-scale=1, width=device-width"/>
<meta name="theme-color" content="#000000"/> <meta name="theme-color" content="#000000"/>
<meta <meta
name="description" name="description"
content="A manga reader that runs tachiyomi's extensions" 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 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/ user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
--> -->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json"/> <link rel="manifest" href="/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`.
-->
<title>Tachidesk</title> <title>Tachidesk</title>
</head> </head>
<body> <body>
<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>
<script type="module" src="./src/index.tsx"></script>
<!-- <!--
This HTML file is a template. This HTML file is a template.
If you open it directly in the browser, you will see an empty page. If you open it directly in the browser, you will see an empty page.

View File

@@ -3,12 +3,11 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "react-scripts start", "start": "vite",
"build": "react-scripts build", "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-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 *", "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" "lint": "eslint src --ext .ts,.tsx,.js,.jsx"
}, },
"browserslist": { "browserslist": {
@@ -29,6 +28,8 @@
"@fontsource/roboto": "^5.0.2", "@fontsource/roboto": "^5.0.2",
"@mui/icons-material": "^5.11.16", "@mui/icons-material": "^5.11.16",
"@mui/material": "^5.13.3", "@mui/material": "^5.13.3",
"@types/node": "18.16.0",
"@vitejs/plugin-react": "^4.0.0",
"axios": "^1.4.0", "axios": "^1.4.0",
"file-selector": "^0.6.0", "file-selector": "^0.6.0",
"i18next": "^22.5.0", "i18next": "^22.5.0",
@@ -38,14 +39,14 @@
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-i18next": "^12.3.1", "react-i18next": "^12.3.1",
"react-router-dom": "^6.11.2", "react-router-dom": "^6.11.2",
"react-scripts": "^5.0.1",
"react-virtuoso": "^4.3.8", "react-virtuoso": "^4.3.8",
"swr": "^2.1.5", "swr": "^2.1.5",
"use-query-params": "^2.2.1", "use-query-params": "^2.2.1",
"vite": "^4.3.9",
"vite-tsconfig-paths": "^4.2.0",
"web-vitals": "^3.3.2" "web-vitals": "^3.3.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.10",
"@types/react": "^18.2.8", "@types/react": "^18.2.8",
"@types/react-beautiful-dnd": "^13.1.4", "@types/react-beautiful-dnd": "^13.1.4",
"@types/react-dom": "^18.2.4", "@types/react-dom": "^18.2.4",

View File

@@ -1,7 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"baseUrl": "./src", "baseUrl": "./src",
"target": "es2015", "target": "ESNext",
"lib": [ "lib": [
"dom", "dom",
"dom.iterable", "dom.iterable",
@@ -22,6 +22,7 @@
"jsx": "react-jsx" "jsx": "react-jsx"
}, },
"include": [ "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