⚡ convert project to vite
This commit is contained in:
parent
45defd0a5b
commit
8cad5ec8ab
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"presets": ["@babel/preset-env", "@babel/preset-react"],
|
|
||||||
"plugins": [
|
|
||||||
"@babel/plugin-syntax-dynamic-import",
|
|
||||||
"@babel/plugin-proposal-class-properties"
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -0,0 +1 @@
|
||||||
|
v20.11.0
|
|
@ -1,34 +0,0 @@
|
||||||
var gulp = require("gulp");
|
|
||||||
var ts = require("gulp-typescript");
|
|
||||||
const webpack = require("webpack-stream");
|
|
||||||
const sass = require("gulp-sass")(require("sass"));
|
|
||||||
|
|
||||||
gulp.task("css", function () {
|
|
||||||
return gulp
|
|
||||||
.src("src/style.scss")
|
|
||||||
.pipe(sass().on("error", sass.logError))
|
|
||||||
.pipe(gulp.dest("./public/css"));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task("js", function () {
|
|
||||||
return gulp
|
|
||||||
.src("src/**/*.tsx?")
|
|
||||||
.pipe(webpack(require("./webpack.config.js")))
|
|
||||||
.pipe(gulp.dest("public"));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task(
|
|
||||||
"watch",
|
|
||||||
gulp.series("js", "css", function () {
|
|
||||||
gulp.watch(
|
|
||||||
[
|
|
||||||
"src/**/*.ts",
|
|
||||||
"src/**/*.tsx",
|
|
||||||
"../lib/src/**/*.ts",
|
|
||||||
"../lib/src/**/*.tsx",
|
|
||||||
],
|
|
||||||
gulp.series("js")
|
|
||||||
);
|
|
||||||
gulp.watch("src/**/*.scss", gulp.series("css"));
|
|
||||||
})
|
|
||||||
);
|
|
|
@ -4,8 +4,12 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"build": "vite build",
|
||||||
|
"dev": "vite serve",
|
||||||
|
"preview": "vite preview",
|
||||||
|
"lint": "eslint ."
|
||||||
},
|
},
|
||||||
|
"type": "module",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
@ -16,8 +20,10 @@
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.5.1",
|
"@fortawesome/fontawesome-svg-core": "^6.5.1",
|
||||||
"@fortawesome/free-solid-svg-icons": "^6.5.1",
|
"@fortawesome/free-solid-svg-icons": "^6.5.1",
|
||||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||||
|
"@nextui-org/react": "^2.2.9",
|
||||||
"@sc07-canvas/lib": "^1.0.0",
|
"@sc07-canvas/lib": "^1.0.0",
|
||||||
"eventemitter3": "^5.0.1",
|
"eventemitter3": "^5.0.1",
|
||||||
|
"framer-motion": "^11.0.5",
|
||||||
"lodash.throttle": "^4.1.1",
|
"lodash.throttle": "^4.1.1",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
|
@ -26,30 +32,21 @@
|
||||||
"socket.io-client": "^4.7.4"
|
"socket.io-client": "^4.7.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.23.9",
|
"@tsconfig/vite-react": "^3.0.0",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
||||||
"@babel/preset-env": "^7.23.9",
|
|
||||||
"@babel/preset-react": "^7.23.3",
|
|
||||||
"@types/lodash.throttle": "^4.1.9",
|
"@types/lodash.throttle": "^4.1.9",
|
||||||
"@types/react": "^18.2.48",
|
"@types/react": "^18.2.48",
|
||||||
"@types/react-dom": "^18.2.18",
|
"@types/react-dom": "^18.2.18",
|
||||||
"@types/socket.io-client": "^3.0.0",
|
"@types/socket.io-client": "^3.0.0",
|
||||||
"babel-loader": "^9.1.3",
|
"@vitejs/plugin-react": "^4.2.1",
|
||||||
"css-loader": "^6.9.1",
|
"autoprefixer": "^10.4.17",
|
||||||
"eslint": "^8.56.0",
|
"eslint": "^8.56.0",
|
||||||
"eslint-config-react-app": "^7.0.1",
|
"eslint-config-react-app": "^7.0.1",
|
||||||
"eslint-plugin-react": "^7.33.2",
|
"eslint-plugin-react": "^7.33.2",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"gulp": "^4.0.2",
|
"postcss": "^8.4.35",
|
||||||
"gulp-cli": "^2.3.0",
|
|
||||||
"gulp-typescript": "^6.0.0-alpha.1",
|
|
||||||
"html-webpack-plugin": "^5.6.0",
|
|
||||||
"sass": "^1.70.0",
|
"sass": "^1.70.0",
|
||||||
"style-loader": "^3.3.4",
|
"tailwindcss": "^3.4.1",
|
||||||
"ts-loader": "^9.5.1",
|
"vite": "^5.1.1",
|
||||||
"webpack": "^5.90.0",
|
"vite-plugin-simple-html": "^0.1.2"
|
||||||
"webpack-cli": "^5.1.4",
|
|
||||||
"webpack-dev-server": "^4.15.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
// eslint-disable-next-line import/no-anonymous-default-export
|
||||||
|
export default {
|
||||||
|
plugins: {
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
},
|
||||||
|
};
|
|
@ -1,4 +1,3 @@
|
||||||
import React from "react";
|
|
||||||
import { Header } from "./Header";
|
import { Header } from "./Header";
|
||||||
import { AppContext } from "../contexts/AppContext";
|
import { AppContext } from "../contexts/AppContext";
|
||||||
import { CanvasWrapper } from "./CanvasWrapper";
|
import { CanvasWrapper } from "./CanvasWrapper";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { createRef, useCallback, useContext, useEffect } from "react";
|
import { createRef, useContext, useEffect } from "react";
|
||||||
import { Canvas } from "../lib/canvas";
|
import { Canvas } from "../lib/canvas";
|
||||||
import { useAppContext } from "../contexts/AppContext";
|
import { useAppContext } from "../contexts/AppContext";
|
||||||
import { PanZoomWrapper } from "@sc07-canvas/lib/src/renderer";
|
import { PanZoomWrapper } from "@sc07-canvas/lib/src/renderer";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useAppContext } from "../contexts/AppContext";
|
import { useAppContext } from "../contexts/AppContext";
|
||||||
import { Canvas } from "../lib/canvas";
|
import { Canvas } from "../lib/canvas";
|
||||||
import { IPalleteContext } from "../types";
|
import { IPalleteContext } from "../types";
|
||||||
|
|
|
@ -1,19 +1,12 @@
|
||||||
import React, {
|
import {
|
||||||
PropsWithChildren,
|
PropsWithChildren,
|
||||||
createContext,
|
createContext,
|
||||||
useContext,
|
useContext,
|
||||||
useEffect,
|
useEffect,
|
||||||
useState,
|
useState,
|
||||||
} from "react";
|
} from "react";
|
||||||
import { Socket } from "socket.io-client";
|
import { ClientConfig, IAppContext, ICanvasPosition } from "../types";
|
||||||
import {
|
|
||||||
ClientConfig,
|
|
||||||
IAppContext,
|
|
||||||
ICanvasPosition,
|
|
||||||
IPalleteContext,
|
|
||||||
} from "../types";
|
|
||||||
import { AuthSession } from "@sc07-canvas/lib/src/net";
|
import { AuthSession } from "@sc07-canvas/lib/src/net";
|
||||||
import { number } from "prop-types";
|
|
||||||
import Network from "../lib/network";
|
import Network from "../lib/network";
|
||||||
|
|
||||||
const appContext = createContext<IAppContext>({} as any);
|
const appContext = createContext<IAppContext>({} as any);
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
<title>webpack-for-react</title>
|
<title>canvas</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="/css/style.css" />
|
<link rel="stylesheet" href="./style.scss" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|
||||||
<script src="bundle.js"></script>
|
<script type="module" src="./index.tsx"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -1,7 +1,13 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import ReactDOM from "react-dom";
|
|
||||||
import { createRoot } from "react-dom/client";
|
import { createRoot } from "react-dom/client";
|
||||||
|
import { NextUIProvider } from "@nextui-org/react";
|
||||||
import App from "./components/App";
|
import App from "./components/App";
|
||||||
|
|
||||||
const root = createRoot(document.getElementById("root")!);
|
const root = createRoot(document.getElementById("root")!);
|
||||||
root.render(<App />);
|
root.render(
|
||||||
|
<React.StrictMode>
|
||||||
|
<NextUIProvider>
|
||||||
|
<App />
|
||||||
|
</NextUIProvider>
|
||||||
|
</React.StrictMode>
|
||||||
|
);
|
||||||
|
|
|
@ -18,9 +18,12 @@ type SentEventValue<K extends keyof INetworkEvents> = EventEmitter.ArgumentMap<
|
||||||
>[Extract<K, keyof INetworkEvents>];
|
>[Extract<K, keyof INetworkEvents>];
|
||||||
|
|
||||||
class Network extends EventEmitter<INetworkEvents> {
|
class Network extends EventEmitter<INetworkEvents> {
|
||||||
socket: Socket<ServerToClientEvents, ClientToServerEvents> = io({
|
socket: Socket<ServerToClientEvents, ClientToServerEvents> = io(
|
||||||
autoConnect: false,
|
import.meta.env.VITE_API_HOST,
|
||||||
});
|
{
|
||||||
|
autoConnect: false,
|
||||||
|
}
|
||||||
|
);
|
||||||
private online_count = 0;
|
private online_count = 0;
|
||||||
private sentEvents: {
|
private sentEvents: {
|
||||||
[key in keyof INetworkEvents]?: SentEventValue<key>;
|
[key in keyof INetworkEvents]?: SentEventValue<key>;
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
/// <reference types="vite/client" />
|
||||||
|
|
||||||
|
interface ImportMetaEnv {
|
||||||
|
readonly VITE_API_HOST: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ImportMeta {
|
||||||
|
readonly env: ImportMetaEnv;
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
const { nextui } = require("@nextui-org/react");
|
||||||
|
|
||||||
|
/** @type {import('tailwindcss').Config} */
|
||||||
|
// eslint-disable-next-line import/no-anonymous-default-export
|
||||||
|
export default {
|
||||||
|
content: [
|
||||||
|
"./index.html",
|
||||||
|
"./src/**/*.{js,ts,jsx,tsx}",
|
||||||
|
"./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}",
|
||||||
|
],
|
||||||
|
theme: {
|
||||||
|
extend: {},
|
||||||
|
},
|
||||||
|
plugins: [nextui()],
|
||||||
|
darkMode: "class",
|
||||||
|
};
|
|
@ -1,7 +1,3 @@
|
||||||
{
|
{
|
||||||
"extends": "@tsconfig/recommended/tsconfig.json",
|
"extends": "@tsconfig/vite-react/tsconfig.json",
|
||||||
"compilerOptions": {
|
|
||||||
"sourceMap": true,
|
|
||||||
"jsx": "react",
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { defineConfig } from "vite";
|
||||||
|
import react from "@vitejs/plugin-react";
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
root: "src",
|
||||||
|
envDir: "..",
|
||||||
|
build: {
|
||||||
|
outDir: "dist",
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
react({
|
||||||
|
include: "**/*.{jsx,tsx}",
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
|
@ -1,27 +0,0 @@
|
||||||
const webpack = require("webpack");
|
|
||||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
||||||
const path = require("path");
|
|
||||||
|
|
||||||
const port = process.env.PORT || 3000;
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
mode: "development",
|
|
||||||
entry: "./src/index.tsx",
|
|
||||||
output: {
|
|
||||||
filename: "bundle.js",
|
|
||||||
path: path.resolve(__dirname, "public"),
|
|
||||||
},
|
|
||||||
devtool: "inline-source-map",
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.tsx?$/,
|
|
||||||
use: "ts-loader",
|
|
||||||
exclude: /node_modules/,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
extensions: [".tsx", ".ts", ".js"],
|
|
||||||
},
|
|
||||||
};
|
|
|
@ -53,7 +53,11 @@ const io = new Server<
|
||||||
canvas: (pixels: string[]) => void;
|
canvas: (pixels: string[]) => void;
|
||||||
online: (data: { count: number }) => void;
|
online: (data: { count: number }) => void;
|
||||||
}
|
}
|
||||||
>(server);
|
>(server, {
|
||||||
|
cors: {
|
||||||
|
origin: "*",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
var PALLETE: PalleteColor[] = [];
|
var PALLETE: PalleteColor[] = [];
|
||||||
const PIXEL_TIMEOUT_MS = 1000;
|
const PIXEL_TIMEOUT_MS = 1000;
|
||||||
|
|
Loading…
Reference in New Issue