Frontend CLI + Templates
This commit is contained in:
27
react/_tmpl/config-overrides.js
Normal file
27
react/_tmpl/config-overrides.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const {
|
||||
override,
|
||||
removeModuleScopePlugin,
|
||||
babelInclude,
|
||||
addWebpackModuleRule,
|
||||
} = require('customize-cra');
|
||||
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||
const addMiniCssExtractPlugin = config => {
|
||||
config.plugins.push(new MiniCssExtractPlugin());
|
||||
return config;
|
||||
}
|
||||
|
||||
module.exports = override(
|
||||
removeModuleScopePlugin(),
|
||||
addMiniCssExtractPlugin,
|
||||
addWebpackModuleRule({
|
||||
test: /\.css$/,
|
||||
use: [ MiniCssExtractPlugin.loader, 'css-loader' ]
|
||||
}),
|
||||
babelInclude([
|
||||
path.resolve(path.join(__dirname, 'src')),
|
||||
fs.realpathSync(path.join(__dirname, '../shared')),
|
||||
]),
|
||||
);
|
||||
28
react/_tmpl/package.json
Normal file
28
react/_tmpl/package.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "{{MODULE_NAME}}",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"shared": "link:../shared",
|
||||
"react": "{{REACT_VERSION}}"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "react-app-rewired start"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": "",
|
||||
"devDependencies": {},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
},
|
||||
"proxy": "http://localhost"
|
||||
}
|
||||
9
react/_tmpl/src/App.jsx
Normal file
9
react/_tmpl/src/App.jsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import {useMemo} from "react";
|
||||
import API from "shared/api";
|
||||
|
||||
export default function App() {
|
||||
|
||||
const api = useMemo(() => new API(), []);
|
||||
|
||||
return <></>
|
||||
}
|
||||
9
react/_tmpl/src/index.js
Normal file
9
react/_tmpl/src/index.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import React from "react";
|
||||
import {createRoot} from "react-dom/client";
|
||||
import App from "./App";
|
||||
import {LocaleProvider} from "shared/locale";
|
||||
|
||||
const root = createRoot(document.getElementById('{{MODULE_NAME}}'));
|
||||
root.render(<LocaleProvider>
|
||||
<App />
|
||||
</LocaleProvider>);
|
||||
@@ -1,66 +1,66 @@
|
||||
{
|
||||
"name": "web-base-frontend",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"private": true,
|
||||
"targets": {
|
||||
"admin-panel": {
|
||||
"source": "./admin-panel/src/index.js",
|
||||
"distDir": "./dist/admin-panel"
|
||||
}
|
||||
},
|
||||
"workspaces": [
|
||||
"admin-panel"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "parcel build",
|
||||
"clean": "rm -rfd .parcel-cache dist/*"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.5",
|
||||
"@babel/plugin-transform-react-jsx": "^7.19.0",
|
||||
"customize-cra": "^1.0.0",
|
||||
"parcel": "^2.8.0",
|
||||
"react-app-rewired": "^2.2.1",
|
||||
"react-scripts": "^5.0.1"
|
||||
},
|
||||
"@parcel/bundler-default": {
|
||||
"minBundles": 1,
|
||||
"minBundleSize": 3000,
|
||||
"maxParallelRequests": 1
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.10.5",
|
||||
"@emotion/styled": "^11.10.5",
|
||||
"@material-ui/core": "^4.12.4",
|
||||
"@material-ui/icons": "^4.11.3",
|
||||
"@material-ui/lab": "^4.0.0-alpha.61",
|
||||
"@mui/icons-material": "^5.11.0",
|
||||
"@mui/material": "^5.11.3",
|
||||
"chart.js": "^4.0.1",
|
||||
"clsx": "^1.2.1",
|
||||
"date-fns": "^2.29.3",
|
||||
"material-ui-color-picker": "^3.5.1",
|
||||
"mini-css-extract-plugin": "^2.7.1",
|
||||
"react": "^18.2.0",
|
||||
"react-chartjs-2": "^5.0.1",
|
||||
"react-collapse": "^5.1.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.6.2",
|
||||
"sprintf-js": "^1.1.2"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
"name": "web-base-frontend",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"private": true,
|
||||
"targets": {
|
||||
"admin-panel": {
|
||||
"source": "./admin-panel/src/index.js",
|
||||
"distDir": "./dist/admin-panel"
|
||||
}
|
||||
},
|
||||
"workspaces": [
|
||||
"admin-panel"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
}
|
||||
}
|
||||
"scripts": {
|
||||
"build": "parcel build",
|
||||
"clean": "rm -rfd .parcel-cache dist/*"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.5",
|
||||
"@babel/plugin-transform-react-jsx": "^7.19.0",
|
||||
"customize-cra": "^1.0.0",
|
||||
"parcel": "^2.8.0",
|
||||
"react-app-rewired": "^2.2.1",
|
||||
"react-scripts": "^5.0.1"
|
||||
},
|
||||
"@parcel/bundler-default": {
|
||||
"minBundles": 1,
|
||||
"minBundleSize": 3000,
|
||||
"maxParallelRequests": 1
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.10.5",
|
||||
"@emotion/styled": "^11.10.5",
|
||||
"@material-ui/core": "^4.12.4",
|
||||
"@material-ui/icons": "^4.11.3",
|
||||
"@material-ui/lab": "^4.0.0-alpha.61",
|
||||
"@mui/icons-material": "^5.11.0",
|
||||
"@mui/material": "^5.11.3",
|
||||
"chart.js": "^4.0.1",
|
||||
"clsx": "^1.2.1",
|
||||
"date-fns": "^2.29.3",
|
||||
"material-ui-color-picker": "^3.5.1",
|
||||
"mini-css-extract-plugin": "^2.7.1",
|
||||
"react": "^18.2.0",
|
||||
"react-chartjs-2": "^5.0.1",
|
||||
"react-collapse": "^5.1.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.6.2",
|
||||
"sprintf-js": "^1.1.2"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -2487,10 +2487,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45"
|
||||
integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
|
||||
|
||||
"@remix-run/router@1.0.3":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.3.tgz#953b88c20ea00d0eddaffdc1b115c08474aa295d"
|
||||
integrity sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q==
|
||||
"@remix-run/router@1.15.3":
|
||||
version "1.15.3"
|
||||
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c"
|
||||
integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==
|
||||
|
||||
"@rollup/plugin-babel@^5.2.0":
|
||||
version "5.3.1"
|
||||
@@ -3838,9 +3838,9 @@ caniuse-api@^3.0.0:
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426:
|
||||
version "1.0.30001435"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz#502c93dbd2f493bee73a408fe98e98fb1dad10b2"
|
||||
integrity sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA==
|
||||
version "1.0.30001600"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz"
|
||||
integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==
|
||||
|
||||
case-sensitive-paths-webpack-plugin@^2.4.0:
|
||||
version "2.4.0"
|
||||
@@ -8584,20 +8584,20 @@ react-refresh@^0.9.0:
|
||||
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf"
|
||||
integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==
|
||||
|
||||
react-router-dom@^6.4.3:
|
||||
version "6.4.3"
|
||||
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.4.3.tgz#70093b5f65f85f1df9e5d4182eb7ff3a08299275"
|
||||
integrity sha512-MiaYQU8CwVCaOfJdYvt84KQNjT78VF0TJrA17SIQgNHRvLnXDJO6qsFqq8F/zzB1BWZjCFIrQpu4QxcshitziQ==
|
||||
react-router-dom@^6.6.2:
|
||||
version "6.22.3"
|
||||
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.22.3.tgz#9781415667fd1361a475146c5826d9f16752a691"
|
||||
integrity sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==
|
||||
dependencies:
|
||||
"@remix-run/router" "1.0.3"
|
||||
react-router "6.4.3"
|
||||
"@remix-run/router" "1.15.3"
|
||||
react-router "6.22.3"
|
||||
|
||||
react-router@6.4.3:
|
||||
version "6.4.3"
|
||||
resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.4.3.tgz#9ed3ee4d6e95889e9b075a5d63e29acc7def0d49"
|
||||
integrity sha512-BT6DoGn6aV1FVP5yfODMOiieakp3z46P1Fk0RNzJMACzE7C339sFuHebfvWtnB4pzBvXXkHP2vscJzWRuUjTtA==
|
||||
react-router@6.22.3:
|
||||
version "6.22.3"
|
||||
resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.22.3.tgz#9d9142f35e08be08c736a2082db5f0c9540a885e"
|
||||
integrity sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==
|
||||
dependencies:
|
||||
"@remix-run/router" "1.0.3"
|
||||
"@remix-run/router" "1.15.3"
|
||||
|
||||
react-scripts@^5.0.1:
|
||||
version "5.0.1"
|
||||
|
||||
Reference in New Issue
Block a user