From 8bdd34412f22459f8e03a789c1e8badf49f60057 Mon Sep 17 00:00:00 2001 From: Youen Toupin Date: Sat, 12 Mar 2022 23:58:44 +0100 Subject: [PATCH] Added WebApp project --- WebApp/.gitignore | 4 ++++ WebApp/.project | 11 +++++++++++ WebApp/package.json | 23 ++++++++++++++++++++++ WebApp/src/app.ts | 4 ++++ WebApp/src/index.html | 8 ++++++++ WebApp/src/main-page.tsx | 7 +++++++ WebApp/tsconfig.json | 12 ++++++++++++ WebApp/webpack.config.js | 42 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 111 insertions(+) create mode 100644 WebApp/.gitignore create mode 100644 WebApp/.project create mode 100644 WebApp/package.json create mode 100644 WebApp/src/app.ts create mode 100644 WebApp/src/index.html create mode 100644 WebApp/src/main-page.tsx create mode 100644 WebApp/tsconfig.json create mode 100644 WebApp/webpack.config.js diff --git a/WebApp/.gitignore b/WebApp/.gitignore new file mode 100644 index 0000000..2482805 --- /dev/null +++ b/WebApp/.gitignore @@ -0,0 +1,4 @@ +node_modules +package-lock.json +www + diff --git a/WebApp/.project b/WebApp/.project new file mode 100644 index 0000000..d780ade --- /dev/null +++ b/WebApp/.project @@ -0,0 +1,11 @@ + + + WebApp + + + + + + + + diff --git a/WebApp/package.json b/WebApp/package.json new file mode 100644 index 0000000..35891ff --- /dev/null +++ b/WebApp/package.json @@ -0,0 +1,23 @@ +{ + "name": "vehicle-monitor-webapp", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "webpack --mode development --watch", + "build": "webpack --mode production" + }, + "author": "Youen Toupin", + "license": "AGPL-3.0", + "dependencies": { + "mithril": "^2.0.4" + }, + "devDependencies": { + "@types/mithril": "^2.0.9", + "html-webpack-plugin": "^5.5.0", + "ts-loader": "^9.2.8", + "typescript": "^4.6.2", + "webpack": "^5.70.0", + "webpack-cli": "^4.9.2" + } +} diff --git a/WebApp/src/app.ts b/WebApp/src/app.ts new file mode 100644 index 0000000..fbe8319 --- /dev/null +++ b/WebApp/src/app.ts @@ -0,0 +1,4 @@ +import m from 'mithril'; +import MainPage from './main-page'; + +m.mount(document.body, MainPage); diff --git a/WebApp/src/index.html b/WebApp/src/index.html new file mode 100644 index 0000000..408ddef --- /dev/null +++ b/WebApp/src/index.html @@ -0,0 +1,8 @@ + + + + Ordinateur de bord + + +

Chargement...

+ diff --git a/WebApp/src/main-page.tsx b/WebApp/src/main-page.tsx new file mode 100644 index 0000000..0dab169 --- /dev/null +++ b/WebApp/src/main-page.tsx @@ -0,0 +1,7 @@ +import m from 'mithril'; + +export default class MainPage { + view() { + return

Hello, world!

+ } +} \ No newline at end of file diff --git a/WebApp/tsconfig.json b/WebApp/tsconfig.json new file mode 100644 index 0000000..3134765 --- /dev/null +++ b/WebApp/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "noImplicitAny": true, + "module": "CommonJS", + "esModuleInterop": true, + "target": "es5", + "jsx": "react", + "jsxFactory": "m", + "allowJs": true, + "moduleResolution": "node" + } +} diff --git a/WebApp/webpack.config.js b/WebApp/webpack.config.js new file mode 100644 index 0000000..996de34 --- /dev/null +++ b/WebApp/webpack.config.js @@ -0,0 +1,42 @@ +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); + +module.exports = { + entry: './src/app.ts', + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + }, + output: { + filename: '[name].js', + path: path.resolve(__dirname, './www/'), + clean: true, + }, + plugins: [ + new HtmlWebpackPlugin({ + template: './src/index.html', + hash: true + }) + ], + optimization: { + moduleIds: 'deterministic', + runtimeChunk: 'single', + splitChunks: { + cacheGroups: { + vendor: { + test: /[\\/]node_modules[\\/]/, + name: 'vendors', + chunks: 'all', + }, + }, + }, + }, +};