From 9f0ca12f6cff76c41fa51819dda846ba460f0847 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Wed, 30 Jun 2021 14:09:28 +0800 Subject: [PATCH] chore: tailwind and devserver --- tsconfig.json | 5 -- web/package.json | 4 +- web/tailwind.config.js | 10 ++- web/webpack.config.ts | 16 ++++- yarn.lock | 143 ++++++++++++++++++++++++++++++++++++++++- 5 files changed, 165 insertions(+), 13 deletions(-) delete mode 100644 tsconfig.json diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 3e67e606..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "lib": ["DOM"], - } -} diff --git a/web/package.json b/web/package.json index 4064b7ea..4d1842c7 100644 --- a/web/package.json +++ b/web/package.json @@ -7,7 +7,8 @@ "license": "GPLv3", "private": true, "scripts": { - "build": "webpack" + "build": "webpack", + "dev": "NODE_ENV=development webpack serve" }, "dependencies": { "linaria": "^3.0.0-beta.2", @@ -21,6 +22,7 @@ "@types/react": "^17.0.11", "@types/react-dom": "^17.0.8", "@types/webpack": "^5.28.0", + "@types/webpack-dev-server": "^3.11.4", "autoprefixer": "^10.2.6", "css-loader": "^5.2.6", "esbuild-loader": "^2.13.1", diff --git a/web/tailwind.config.js b/web/tailwind.config.js index 1d5591e8..8e4d5a19 100644 --- a/web/tailwind.config.js +++ b/web/tailwind.config.js @@ -1,11 +1,15 @@ // tailwind.config.js // Reference: https://www.tailwindcss.cn/docs/configuration + module.exports = { - purge: [], - darkMode: false, // or 'media' or 'class' + purge: { + enabled: process.env.NODE_ENV !== 'development', + content: ['./src/**/*.{js,jsx,ts,tsx}'], + }, + darkMode: 'class', // or 'media' theme: { extend: {}, }, variants: {}, plugins: [], -} +}; diff --git a/web/webpack.config.ts b/web/webpack.config.ts index cf838fc8..477758f4 100644 --- a/web/webpack.config.ts +++ b/web/webpack.config.ts @@ -2,7 +2,8 @@ * Reference: https://webpack.js.org/configuration/configuration-languages/ */ -import { Configuration } from 'webpack'; +import type { Configuration } from 'webpack'; +import type WebpackDevServer from 'webpack-dev-server'; import path from 'path'; import HtmlWebpackPlugin from 'html-webpack-plugin'; @@ -10,7 +11,17 @@ const ROOT_PATH = path.resolve(__dirname, './'); const DIST_PATH = path.resolve(ROOT_PATH, './dist'); const ASSET_PATH = process.env.ASSET_PATH || '/'; +declare module 'webpack' { + interface Configuration { + devServer?: WebpackDevServer.Configuration; + } +} + +const mode = + process.env.NODE_ENV === 'development' ? 'development' : 'production'; + const config: Configuration = { + mode, entry: { app: './src/index.tsx', }, @@ -19,6 +30,9 @@ const config: Configuration = { filename: '[name].[contenthash].js', publicPath: ASSET_PATH, }, + devServer: { + port: 11011, + }, module: { rules: [ { diff --git a/yarn.lock b/yarn.lock index faf98527..4af5a067 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1040,11 +1040,34 @@ resolved "http://npm.gllue.net/@tsconfig%2fnode16/-/node16-1.0.1.tgz#a6ca6a9a0ff366af433f42f5f0e124794ff6b8f1" integrity sha1-pspqmg/zZq9DP0L18OEkeU/2uPE= +"@types/body-parser@*": + version "1.19.0" + resolved "http://npm.gllue.net/@types%2fbody-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha1-BoWzxH6zAG/+0RfN1VFkth+AU48= + dependencies: + "@types/connect" "*" + "@types/node" "*" + "@types/component-emitter@^1.2.10": version "1.2.10" resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea" integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg== +"@types/connect-history-api-fallback@*": + version "1.3.4" + resolved "http://npm.gllue.net/@types%2fconnect-history-api-fallback/-/connect-history-api-fallback-1.3.4.tgz#8c0f0e6e5d8252b699f5a662f51bdf82fd9d8bb8" + integrity sha1-jA8Obl2CUraZ9aZi9Rvfgv2di7g= + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.34" + resolved "http://npm.gllue.net/@types%2fconnect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" + integrity sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE= + dependencies: + "@types/node" "*" + "@types/eslint-scope@^3.7.0": version "3.7.0" resolved "http://npm.gllue.net/@types%2feslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" @@ -1066,6 +1089,25 @@ resolved "http://npm.gllue.net/@types%2festree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74" integrity sha1-GNyAkbKF35DbLyWqfZBs/DlLf3Q= +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.22" + resolved "http://npm.gllue.net/@types%2fexpress-serve-static-core/-/express-serve-static-core-4.17.22.tgz#e011c55de3f17ddf1161f790042a15c5a218744d" + integrity sha1-4BHFXePxfd8RYfeQBCoVxaIYdE0= + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.12" + resolved "http://npm.gllue.net/@types%2fexpress/-/express-4.17.12.tgz#4bc1bf3cd0cfe6d3f6f2853648b40db7d54de350" + integrity sha1-S8G/PNDP5tP28oU2SLQNt9VN41A= + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/glob@^7.1.1": version "7.1.3" resolved "http://npm.gllue.net/@types%2fglob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -1079,11 +1121,23 @@ resolved "http://npm.gllue.net/@types%2fhtml-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" integrity sha1-PJ7pgPGhDWAhrmYyyj55yi7E+1A= +"@types/http-proxy@^1.17.5": + version "1.17.6" + resolved "http://npm.gllue.net/@types%2fhttp-proxy/-/http-proxy-1.17.6.tgz#62dc3fade227d6ac2862c8f19ee0da9da9fd8616" + integrity sha1-Ytw/reIn1qwoYsjxnuDanan9hhY= + dependencies: + "@types/node" "*" + "@types/json-schema@*", "@types/json-schema@^7.0.6": version "7.0.7" resolved "http://npm.gllue.net/@types%2fjson-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0= +"@types/mime@^1": + version "1.3.2" + resolved "http://npm.gllue.net/@types%2fmime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o= + "@types/minimatch@*": version "3.0.4" resolved "http://npm.gllue.net/@types%2fminimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" @@ -1109,6 +1163,16 @@ resolved "http://npm.gllue.net/@types%2fprop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha1-KrDV2i5YFflLC51LldHl8kOrLKc= +"@types/qs@*": + version "6.9.6" + resolved "http://npm.gllue.net/@types%2fqs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" + integrity sha1-35w8izGiR+wxXmmWVmvjFx30s7E= + +"@types/range-parser@*": + version "1.2.3" + resolved "http://npm.gllue.net/@types%2frange-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha1-fuMwunyq+5gJC+zoal7kQRWQTCw= + "@types/react-dom@^17.0.8": version "17.0.8" resolved "http://npm.gllue.net/@types%2freact-dom/-/react-dom-17.0.8.tgz#3180de6d79bf53762001ad854e3ce49f36dd71fc" @@ -1130,6 +1194,63 @@ resolved "http://npm.gllue.net/@types%2fscheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" integrity sha1-GIRSBehv8AOFF6q3oYpiprn3EnU= +"@types/serve-static@*": + version "1.13.9" + resolved "http://npm.gllue.net/@types%2fserve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" + integrity sha1-qs8oqFoF7imhH7fD6tk1rFbzPk4= + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/source-list-map@*": + version "0.1.2" + resolved "http://npm.gllue.net/@types%2fsource-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/tapable@^1": + version "1.0.7" + resolved "http://npm.gllue.net/@types%2ftapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" + integrity sha1-VFFYNC+Uno/Tv9gTIklx7N3D+sQ= + +"@types/uglify-js@*": + version "3.13.0" + resolved "http://npm.gllue.net/@types%2fuglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" + integrity sha1-HK2N8fsLFDxaugjeVxLqnR/3ESQ= + dependencies: + source-map "^0.6.1" + +"@types/webpack-dev-server@^3.11.4": + version "3.11.4" + resolved "http://npm.gllue.net/@types%2fwebpack-dev-server/-/webpack-dev-server-3.11.4.tgz#90d47dd660b696d409431ab8c1e9fa3615103a07" + integrity sha1-kNR91mC2ltQJQxq4wen6NhUQOgc= + dependencies: + "@types/connect-history-api-fallback" "*" + "@types/express" "*" + "@types/serve-static" "*" + "@types/webpack" "^4" + http-proxy-middleware "^1.0.0" + +"@types/webpack-sources@*": + version "2.1.0" + resolved "http://npm.gllue.net/@types%2fwebpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha1-iIKwvWLR4M5i8YPQ0Bty5ugujBA= + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4": + version "4.41.29" + resolved "http://npm.gllue.net/@types%2fwebpack/-/webpack-4.41.29.tgz#2e66c1de8223c440366469415c50a47d97625773" + integrity sha1-LmbB3oIjxEA2ZGlBXFCkfZdiV3M= + dependencies: + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + anymatch "^3.0.0" + source-map "^0.6.0" + "@types/webpack@^5.28.0": version "5.28.0" resolved "http://npm.gllue.net/@types%2fwebpack/-/webpack-5.28.0.tgz#78dde06212f038d77e54116cfe69e88ae9ed2c03" @@ -1381,7 +1502,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.2: +anymatch@^3.0.0, anymatch@~3.1.2: version "3.1.2" resolved "http://npm.gllue.net/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha1-wFV8CWrzLxBhmPT04qODU343hxY= @@ -3019,7 +3140,18 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy@^1.17.0: +http-proxy-middleware@^1.0.0: + version "1.3.1" + resolved "http://npm.gllue.net/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" + integrity sha1-Q3ANbZ7st0Gb8IahKND3IF2etmU= + dependencies: + "@types/http-proxy" "^1.17.5" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.17.0, http-proxy@^1.18.1: version "1.18.1" resolved "http://npm.gllue.net/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk= @@ -3308,6 +3440,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "http://npm.gllue.net/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc= + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "http://npm.gllue.net/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -3672,7 +3809,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.4" resolved "http://npm.gllue.net/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" integrity sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=