Reorganize the project's folder structure, make it simple, no longer use pnpm workspace (and vscode multi-root workspace).
- Remove
@types/semverv7.7.1
Turn pnpm catalog feature on.
Migrate to ESLint flat config, no longer use eslint-config-airbnb since its maintainer has no time to support ESLint flat config (see airbnb/javascript#2961).
Set Vite css target to the current Electron's chrome version.
Upgrade react to v19.
Upgrade electron to v40. This requires you to develop with Node.js v24 or later.
- Add
@eslint/jsv9.39.2@types/confusing-browser-globalsv9.39.2confusing-browser-globalsv1.0.11globalsv17.0.0jsonc-parserv3.3.1typescript-eslintv8.53.0
- Upgrade
@types/nodev22.19.3 -> v24.10.9@types/reactv18.2.27 -> v19.2.8@types/react-domv18.3.7 -> v19.2.3electronv39.2.7 -> v40.1.0electron-builderv26.4.0 -> v26.7.0reactv18.3.1 -> v19.2.3react-domv18.3.1 -> v19.2.3
- Remove
@typescript-eslint/eslint-pluginv8.51.0@typescript-eslint/parserv8.51.0browserslistv4.28.1cross-envv10.1.0eslint-config-airbnbv19.0.4eslint-config-airbnb-basev15.0.0eslint-config-prettierv10.1.8eslint-plugin-jsx-a11yv6.10.2eslint-plugin-nv17.23.1
Rename package names:
@ter/app-common->@app/common@ter/app-main->@app/main@ter/app-renderer->@app/renderer@ter/eslint-config->@app-config/eslint-config@ter/scripts->@app-config/scripts@ter/tsconfigs->@app-config/tsconfigs
Rename executable binary name to template-electron-react.
Change AppInfo:
appPathis installation directory in production env,<repo>/workingdirectory in development envuserDataPathis user data directory in production env,<repo>/workingdirectory in development env
Development environment changes:
- Require
pnpmv10 - Require
nodev22
Simplify window management.
Add menu item App / Remember Window State to control whether the window state should be restored when app opens.
- Add
@jest/globalsv30.2.0cross-envv10.1.0eslint-config-airbnb-basev15.0.0eslint-plugin-nv17.23.1react-routerv7.11.0stylelint-config-standardv39.0.1stylelint-config-standard-scssv16.0.0stylelint-orderv7.0.1
- Upgrade
@jest/typesv29.6.3 -> v30.2.0@reduxjs/toolkitv1.9.5 -> v2.8.2@swc/jestv0.2.29 -> v0.2.39@testing-library/domv9.3.1 -> v10.4.1@testing-library/jest-domv6.1.2 -> v6.9.1@testing-library/reactv14.0.0 -> v16.3.1@testing-library/user-eventv14.4.3 -> v14.6.1@types/nodev18.17.14 -> v22.19.3@types/reactv18.2.21 -> v18.2.27@types/react-domv18.2.7 -> v18.3.7@types/semverv7.5.1 -> v7.7.1@types/text-tablev0.2.2 -> v0.2.5@types/yargs-parserv21.0.0 -> v21.0.3@typescript-eslint/eslint-pluginv6.6.0 -> v8.51.0@typescript-eslint/parserv6.6.0 -> v8.51.0@vitejs/plugin-reactv4.0.4 -> v5.1.2browserslistv4.21.10 -> v4.28.1camelcasev8.0.0 -> v9.0.0chalkv5.6.0 -> v5.6.2clsxv2.0.0 -> v2.1.1concurrentlyv8.2.1 -> v9.2.1dayjsv1.11.9 -> v1.11.19electronv26.0.0 -> v37.4.0electron-builderv24.6.4 -> v26.0.19electron-devtools-installerv3.2.0 -> v4.0.0electron-storev8.1.0 -> v11.0.2esbuild-loaderv4.0.2 -> v4.4.2eslintv8.48.0 -> v9.39.2eslint-config-prettierv9.0.0 -> v10.1.8eslint-plugin-importv2.28.1 -> v2.32.0eslint-plugin-jestv27.2.3 -> v29.12.1eslint-plugin-jsx-a11yv6.7.1 -> v6.10.2eslint-plugin-prettierv5.0.0 -> v5.5.4eslint-plugin-reactv7.33.2 -> v7.37.5eslint-plugin-react-hooksv4.6.0 -> v7.0.1fork-ts-checker-webpack-pluginv8.0.0 -> v9.1.0huskyv8.0.3 -> v9.1.7jestv29.6.4 -> v30.2.0jest-environment-jsdomv29.6.4 -> v30.2.0jest-watch-typeaheadv2.2.2 -> v3.0.1lint-stagedv14.0.1 -> v16.1.5prettierv3.0.2 -> v3.7.4postcssv8.4.29 -> v8.5.6reactv18.2.0 -> v18.3.1react-domv18.2.0 -> v18.3.1rimrafv5.0.1 -> v6.1.2sassv1.66.1 -> v1.97.1semverv7.5.4 -> v7.7.3source-map-loaderv4.0.1 -> v5.0.0stylelintv15.10.3 -> v16.26.1stylelint-config-recess-orderv4.3.0 -> v7.4.0stylelint-config-sass-guidelinesv10.0.0 -> v12.1.0ts-patternv5.0.5 -> v5.8.0typescriptv5.2.2 -> v5.9.3typescript-plugin-css-modulesv5.0.1 -> v5.2.0vitev4.4.9 -> v7.3.0vite-plugin-checkerv0.6.2 -> v0.12.0vite-tsconfig-pathsv4.2.0 -> v6.0.3whatwg-fetchv3.6.18 -> v3.6.20web-vitalsv3.4.0 -> v5.1.0webpackv5.88.2 -> v5.104.1webpack-cliv5.1.4 -> v6.0.1winstonv3.10.0 -> v3.19.0yargs-parserv21.1.1 -> v22.0.0
- Remove
@types/electron-devtools-installerv2.2.2@types/jestv30.0.0@types/lodashv4.14.197@types/react-test-rendererv18.0.1eslint-plugin-nodev11.1.0immerv9.0.21lodashv4.17.21react-reduxv8.1.2react-router-domv6.15.0
- Add
ts-patternto perform pattern matching - Use
swcto do unit testing - Exclude
__mocks__folders in tsconfig and json config - Add
IpcMainSenderAPIfor defining main-to-renderer ipc APIs - use
createHashRouterdata router - Make
@ter/app-commona pure-esm package - Turn off vite-plugin-checker
enableBuild
- Fix jest module name wrappers
- Add
@swc/jestv0.2.29ts-patternv5.0.5whatwg-fetchv3.6.18
- Upgrade
@jest/typesv29.5.0 -> v29.6.3@testing-library/jest-domv5.16.5 -> v6.1.2@types/jestv29.5.2 -> v29.5.4@types/nodev18.16.18 -> v18.17.14@types/reactv18.2.15 -> v18.2.21@types/react-test-rendererv18.0.0 -> v18.0.1@types/semverv7.5.0 -> v7.5.1@typescript-eslint/eslint-pluginv5.59.11 -> 6.6.0@typescript-eslint/parserv5.59.11 -> 6.6.0@vitejs/plugin-reactv4.0.1 -> v4.0.4browserslistv4.21.9 -> v4.21.10camelcasev6.3.0 -> v8.0.0chalkv4.1.2 -> v5.3.0clsxv1.2.1 -> v2.0.0electron-builderv24.4.0 -> v24.6.4eslintv8.42.0 -> v8.48.0eslint-config-prettierv8.8.0 -> v9.0.0eslint-plugin-importv2.27.5 -> v2.28.1eslint-plugin-jestv27.2.1 -> v27.2.3eslint-plugin-prettierv4.2.1 -> v5.0.0eslint-plugin-reactv7.32.2 -> v7.33.2jestv29.5.0 -> v29.6.4jest-environment-jsdomv29.5.0 -> v29.6.4lint-stagedv13.2.2 -> v14.0.1postcssv8.4.24 -> v8.4.29prettierv2.8.8 -> v3.0.3react-router-domv6.13.0 -> v6.15.0sassv1.63.4 -> v1.66.1stylelintv14.16.1 -> v15.10.3stylelint-config-recess-orderv3.1.0 -> v4.3.0stylelint-config-sass-guidelinesv9.0.1 -> v10.0.0typescriptv5.1.3 -> v5.2.2vitev4.4.0 -> v4.4.9vite-plugin-checkerv0.6.1 -> v0.6.2web-vitalsv3.3.2 -> v3.4.0webpackv5.88.1 -> v5.88.2webpack-cliv4.10.0 -> v5.1.4
- Remove
@babel/corev7.22.5@babel/preset-typescriptv7.22.5@jest/transformv28.5.0@types/babel__corev7.20.1@types/testing-library__jest-domv5.14.6babel-jestv29.5.0babel-preset-react-appv10.0.1jest-resolvev29.5.0react-app-polyfillv3.0.0react-reduxv8.1.0
- Add assertion utils separately for main and renderer
For electron main process, it's better to use node assertion module, the only customized assertion util is
assertIsNever - Add application logger
AppLogger, logs will be stored in<userData>/logsfolder inapp-<time>.logfile format - Use
esbuildto transpile app-main code
- No customized window id
- Add
lint:fixNPM script - Import router stuff directly from
react-router-dom - Make
@ter/scriptsa pure-esm package - Upgrade Electron to v26.0.0
- Apply stricter tsconfig on vite.config.ts, do typecheck for it
- Add
@types/lodashv4.14.197dayjsv1.11.9esbuild-loaderv4.0.2lodashv4.17.21winstonv3.10.0
- Upgrade
concurrentlyv7.6.0 -> v8.2.1electronv24.5.0 -> v26.0.0rimrafv3.0.2 -> v5.0.1
- Remove
babel-loaderv9.1.3react-routerv6.13.0terser-webpack-pluginv5.3.9
Compile renderer process code via vite
It seems that create-react-app (CRA) is no longer maintained (at least not active). It's no longer recommended by React either, instead React recommends some frameworks. For more information, see discussion and issue.
Continuing to use CRA will cause us some problems:
- It's difficult to keep up with the latest versions of so many tools if
CRAcan't keep up. CRAis slow.SSRis not supported (I don't know ifSSRis suitable for desktop applications, but there's a tool nextron that makesSSRwork withelectron).
So I decided to migrate to compiling renderer process code via vite.
For main process code and preload script code, it's not able to compile them via vite, the reasons are:
viteonly runs onerollupinstance in aviteconfiguration.- We can only have one
viteconfiguration to compile main process code and preload script code, or we cannot supporthot-relaoding-electronfeature. rollupalways chunks shared dependencies between multiple inputs, we cannot getrollupto generate standalone js files (see issue).
Upgrade React to v18
Upgrade React to v18 as it no longer depends on react-scripts.
- Run release dry-run workflow for PRs
- Don't use
web-vitalsdeprecated fns - Set electron renderer content-security-policy
- Prettify webpack stats output
- Allow TypeScript
declaresyntax in app-main code
- New
@babel/preset-typescriptv7.22.5@jest/transformv29.5.0@types/babel__corev7.20.1@types/semverv7.5.0@vitejs/plugin-reactv4.0.1babel-loaderv9.1.3babel-preset-react-appv10.0.1react-app-polyfillv3.0.0radashv11.0.0semverv7.5.4source-map-loaderv4.0.1vitev4.4.0vite-plugin-checkerv0.6.1vite-tsconfig-pathsv4.2.0webpack-cliv4.10.0
- Upgrade
@testing-library/domv8.20.0 -> v9.3.1@testing-library/reactv12.1.5 -> v14.0.0@types/reactv17.0.62 -> v18.2.15@types/react-domv17.0.20 -> v18.2.7@types/react-test-rendererv17.0.2 -> v18.0.0fork-ts-checker-webpack-pluginv6.5.3 -> v8.0.0reactv17.0.2 -> v18.2.0react-domv17.0.2 -> v18.2.0react-test-rendererv17.0.2 -> v18.2.0webpackv5.87.0 -> v5.88.1
- Remove
@babel/plugin-syntax-flowv7.22.5@babel/plugin-transform-react-jsxv7.22.5@testing-library/react-hooksv8.0.1@types/case-sensitive-paths-webpack-pluginv2.1.6@types/lodashv4.14.195lodashv4.17.21react-app-rewiredv2.1.9react-scriptsv5.0.1
- Rename project to
template-electron-react(ter)
- Stop using
React.FC, see - Instead of invoking electron api to get window type, pass window type via additional arguments
- Improve api-builder types to accept function types
- [
Lint] Extends@typescript-eslint/recommendedand@typescript-eslint/recommended-requiring-type-checkingto get stricter limits
- Rename
@tecra/electron-common->@ter/app-common@tecra/electron-main->@ter/app-main@tecra/electron-renderer->@ter/app-renderer@tecra/eslint-config->@ter/eslint-config@tecra/scripts->@ter/scripts@tecra/tsconfigs->@ter/tsconfigs
- New
@typescript-eslint/eslint-pluginv5.59.11@typescript-eslint/parsev5.59.11@types/yargs-parserv21.0.0yargs-parserv21.1.1
- Remove
eslint-config-airbnb-typescriptv17.0.0
- Support saving/remember window states
- [
Typescript] fix typescript-plugin-css-modules load paths to resolve imports based on baseUrl
I previously put collected utilities into this project. In this version, I removed them because I already had another project for them.
- Remove all unused/useless/unnecessary util functions.
- Refactor packages structure. Now we only have 6 packages:
@tecra/electron-common@tecra/electron-main@tecra/electron-renderer@tecra/eslint-config@tecra/scripts@tecra/tsconfigs
- [
Electron] For security reasons, enablecontextIsolationand disablenodeIntegration, use preload scripts
- [
Lint] Enable ESLint ruleno-param-reassign - [
Lint] Disable ESLint ruleno-await-in-loop - [
Lint] Disable StyleLint rulemax-nesting-depth - [
Hooks] Delete useless hookuseConstFn - [
Types] Split global-types entries into@tecra-config/global-types/types/index.node@tecra-config/global-types/types/index.react
- New
electron-storev8.1.0
- Upgrade
@babel/corev7.19.6 -> v7.22.5@babel/plugin-syntax-flowv7.18.6 -> v7.22.5@babel/plugin-transform-react-jsxv7.19.0 -> v7.22.5@reduxjs/toolkitv1.8.6 -> v1.9.5@testing-library/domv8.19.0 -> v8.20.0@types/jestv29.2.3 -> v29.5.2@types/lodashv4.14.189 -> v4.14.195@types/nodev16.11.68 -> v18.16.18@types/reactv17.0.50 -> v17.0.62@types/react-domv17.0.17 -> v17.0.20@types/testing-library__jest-domv5.14.5 -> v5.14.6browserslistv4.21.4 -> v4.21.9concurrentlyv7.4.0 -> v7.6.0electronv19.0.11 -> v24.5.0electron-builderv23.6.0 -> v24.4.0eslintv8.24.0 -> v8.42.0eslint-config-prettierv8.5.0 -> v8.8.0eslint-plugin-importv2.26.0 -> v2.27.5eslint-plugin-jestv27.1.3 -> v27.2.1eslint-plugin-jsx-a11yv6.6.1 -> v6.7.1eslint-plugin-reactv7.31.10 -> v7.32.2fork-ts-checker-webpack-pluginv6.5.2 -> v6.5.3huksyv8.0.1 -> v8.0.3immerv9.0.15 -> v9.0.21lint-stagedv13.0.3 -> v13.2.2postcssv8.4.18 -> v8.4.24prettierv2.7.1 -> v2.8.8react-reduxv8.0.4 -> v8.1.0react-routerv6.4.2 -> v6.13.0react-router-domv6.4.2 -> v6.13.0sassv1.55.0 -> v1.63.4stylelintv14.14.0 -> v14.16.1stylelint-cofnig-recess-orderv3.0.0 -> v3.1.0terser-webpack-pluginv5.3.6 -> v5.3.9type-festv3.2.0 -> v3.12.0typescriptv4.8.4 -> v5.1.3typescript-plugin-css-modulesv3.4.0 -> v5.0.1web-vitalsv3.0.4 -> v3.3.2webpackv5.74.0 -> v5.87.0
- [
Build] Speed up compilation with parallel builds - [
Build] SetwebpackChunkName - [
Build] Use babel to compile electron main process code - [
Build] Turn oninlineSourcesfor debugging - [
Build] Make webpack supportdeclaresyntax - [
CI/CD] Runteston multiple os - [
NPM] Add new NPM scripttypecheck - [
Test] Store jest caches inside this project - [
Test] Change the scope of collecting coverage files - [
Lint] Enable rulesimport/order,@typescript-eslint/require-await - [
Lint] Disable rulereact/require-default-props - [
Lint] Enable rule@typescript-eslint/consistent-type-exports,@typescript-eslint/consistent-type-imports - [
Lint] Sort imports incase-insensitivemode - [
Lint] Enable rule@typescript-eslint/no-empty-interface - [
Lint] Allow private/protected/index-signature property access in test files - [
Lint] Change naming convention configurations - [
Lint] Enable rule@typescript-eslint/no-floating-promises,@typescript-eslint/no-misused-promises
- [
Hooks] Fix return type ofuseDelayFn
-
Use
pnpminstead ofnpmas the package manager -
[
Lint] Change enum member naming convention toUPPER_CASE -
[
Hooks] ChangeuseIsMountedto return a function to get the state -
[
NPM] Rename npm scripttest-coveragetotest-full -
[
TS] Enable ruleuseDefineForClassFields -
[
TS] DisablednamedExportsof plugintypescript-plugin-css-modules -
[
Types] Change type utils for picking keys and propsPickNullableKeysPickNonNullableKeysPickUndefinableKeysPickNonUndefinableKeysPickNullishKeysPickNonNullishKeysPickNullablePropsOmitNullablePropsPickNonNullablePropsOmitNonNullablePropsPickUndefinablePropsOmitUndefinablePropsPickNonUndefinablePropsOmitNonUndefinablePropsPickNullishPropsOmitNullishPropsPickNonNullishPropsOmitNonNullishProps
-
[
Types] Move some global types into@tecra-pkg/utils-type -
[
Utils/React] DeleteReactImmerReducer
- New
@tecra-pkg/utils@tecra-pkg/utils-react-router
- Rename
@tecra/assets->@tecra-pkg/assets@tecra/electron-common->@tecra-pkg/electron-common@tecra/electron-main(packages/electron-main) ->@tecra-app/electron-main(app/electron-main)@tecra/electron-renderer(packages/electron-renderer) ->@tecra-app/electron-renderer(app/electron-renderer)@tecra/eslint-config(packages/eslint-config) ->@tecra-config/eslint-config(configs/eslint-config)@tecra/global-types(packages/global-types) ->@tecra-config/global-types(configs/global-types)@tecra/hooks->@tecra-pkg/hooks@tecra/scripts(packages/scripts) ->@tecra-config/scripts(configs/scripts)@tecra/stylelint-config(packages/stylelint-config) ->@tecra-config/stylelint-config(configs/stylelint-config)@tecra/tsconfigs(packages/tsconfigs) ->@tecra-config/tsconfigs(configs/tsconfigs)@tecra/utils-react->@tecra-pkg/utils-react@tecra/utils-redux->@tecra-pkg/utils-redux@tecra/utils-test->@tecra-pkg/utils-test@tecra/utils-type->@tecra-pkg/utils-type
- Remove
@tecra/utils-fluentui
- New
@babel/corev7.22.5@babel/plugin-syntax-flowv7.18.6@babel/plugin-transform-react-jsxv7.19.0@testing-library/domv8.19.0@types/testing-library__jest-domv5.14.5@typescript-eslint/utilsv5.40.1cross-envv10.0.0fork-ts-checker-webpack-pluginv6.5.2identity-obj-proxyv3.0.0jest-environment-jsdomv29.5.0jest-resolvev29.5.0postcssv8.4.18terser-webpack-pluginv5.3.6type-festv3.2.0webpackv5.74.0
- Upgrade
@jest/typesv27.5.1 -> v29.5.0@reduxjs/toolkitv1.6.1 -> v1.8.6@testing-library/jest-domv5.14.1 -> v5.16.5@testing-library/reactv12.1.1 -> v12.1.5@testing-library/react-hostv7.0.2 -> v8.0.1@testing-library/user-eventv13.2.1 -> v14.4.3@types/electron-devtools-installerv2.2.1 -> v2.2.2@types/jestv27.0.2 -> v29.5.2@types/nodev16.10.2 -> v16.11.68@types/reactv17.0.26 -> v17.0.50@types/react-domv17.0.9 -> v17.0.17@types/react-test-rendererv17.0.1 -> v17.0.2@typescript-eslint/eslint-pluginv5.4.0 -> v5.40.1@typescript-eslint/experimental-utilsv5.4.0 -> v5.40.1@typescript-eslint/parserv5.4.0 -> v5.40.1@typescript-eslint/scope-managerv5.4.0 -> v5.40.1@typescript-eslint/typesv5.4.0 -> v5.40.1@typescript-eslint/typescript-estreev5.4.0 -> v5.40.1@typescript-eslint/visitor-keysv5.4.0 -> v5.40.1babel-jestv27.2.4 -> v29.5.0browserslistv4.17.2 -> v4.21.4clsxv1.1.1 -> v1.2.1concurrentlyv6.2.2 -> v7.4.0error-oopv0.4.0 -> v0.6.0electronv16.0.6 -> v19.0.11electron-builderv22.11.7 -> v23.6.0eslintv8.2.0 -> v9.34.0eslint-config-airbnbv19.0.0 -> v19.0.4eslint-config-airbnb-typescriptv16.1.0 -> v17.0.0eslint-config-prettierv8.3.0 -> v8.5.0eslint-plugin-importv2.25.3 -> v2.26.0eslint-plugin-jestv25.2.4 -> v27.1.3eslint-plugin-jsx-a11yv6.5.1 -> v6.6.1eslint-plugin-prettierv4.0.0 -> v4.2.1eslint-plugin-reactv7.27.0 -> v7.31.10eslint-plugin-react-hooksv4.3.0 -> v4.6.0huskyv7.0.4 -> v8.0.1immerv9.0.6 -> v9.0.15jestv27.2.4 -> v29.5.0jest-watch-typeaheadv1.0.0 -> v2.2.2lint-stagedv11.1.2 -> v13.0.3prettierv2.4.1 -> v2.7.1react-app-rewiredv2.1.8 -> v2.1.9react-reduxv7.2.5 -> v8.0.4react-routerv6.0.1 -> v6.4.2react-router-domv6.0.1 -> v6.4.2react-scriptsv4.0.3 -> v5.0.1sassv1.42.1 -> v1.55.0stylelintv14.1.0 -> v14.14.0ts-loaderv8.3.0 -> v9.2.6typescriptv4.4.2 -> v4.8.4use-immerv0.6.0 -> v0.7.0web-vitalsv2.1.0 -> v3.0.4webpack-cliv4.8.0 -> v4.10.0
- Remove
@fluentui/reactv8.36.0@types/lodashv4.14.175@types/react-reduxv7.1.21error-oopv0.6.0jest-circusv27.2.4lodashv4.17.21react-scrollbars-customv4.0.27ts-essentialsv9.0.0
- Support to open links in external default browser
- [Github] Use cache in CI
- [Hooks] Add parameter
initialValueintousePrevious, parameterinitialValueofuseBooleannow is optional - [Hooks] Add new hooks
useIsMountedandusePersistFn - [Hooks] Improve
usePrevious, only re-run effect when value changes - [Hooks] Improve
useCountdownto avoid unnecessary re-renders - [Hooks] Add tests for hooks
useCountdown,useInterval,useSimpleInterval,useSimpleTimeout,useTimeoutanduseWhyDidYouUpdate - [IPC] Add
IpcServerandIpcClient - [Lint] When in stage
pre-commitonly lint changed files - [Lint] Use
stylelint-config-recess-orderto lint css properties order - [Lint] Disable stylelint rule
selector-max-id - [NPM] Add
--if-presentin npm scripts - [NPM] Add npm script
devin not-react packages - [Renderer] Display app details in the Introduction UI
- [Renderer] Use
react-routerto route urls - [Test] Support package own
setup.test.ts - [Test] Support to pass
--verbosewhen do unit test - [Types] Add global types
PickProp,AnyFn,UnknownFnandVoidReturn - [Utils/React] Add utils for callback prop
onRenderXXX:defaultOnRenderandrenderFactory - [Utils/React] Add type
ReactImmerReducer - [Utils/Test] Add
mockLocalStorageandmockSessionStorageto help mock local storage and session storage - [Utils/Test] Add test utils:
expectElementSnapshot,expectSnapshot,mockConsoleToMatchSnapshot - [Utils/Type] Add base type utilities:
LowerAlpha,UpperAlpha,Alpha,DigitandHexDigit - [Utils/Type] Add type utilities for hex color:
IsHexColorandMakeHexColor - [Utils/Type] Add type utilities:
OmitNonNullablePropsOmitNullablePropsOmitUndefinablePropsPickNonNullableKeysPickNonNullablePropsPickNullableKeysPickNullablePropsPickUndefinableKeysPickUndefinableProps
- Change local webpack server port to
4321 - [Git] Use
huskyto execute pre-commit scripts - [Hooks] Simplify
useConstFn, useuseConstFnto create updater actions - [Test] Fix mocks setup in test for local storage and session storage
- [Test] Set jest environment to
jest-environment-jsdom - [Utils/FluenUI] Fix
FluentuiProvidercss class
- [Hooks] Clear timeout when unmount in
useDelayFn
-
[Hooks] Rename
useSimpleIntervaltouseSingleInterval, renameuseSimpleTimeouttouseSingleTimeout -
[Hooks]
useKeyis longer supported -
[IPC]
IpcMainWrapperandIpcRendererWrapperare no longer supported -
[Renderer]
KeyboardCaptoris longer supported -
[Types] Delete type
IChildrenElementProps -
[Utils/Redux]
createTypedSelectoris no longer supported, usereact-reduxTypedUseSelectorHookinstead. -
[Utils/Redux]
WritableDraftwon't be re-exported fromimmer -
[Uitls/Type] Move some global types into
@tecra/utils-type:ContainContainedExcludeFunctionExcludeUnderscorePrefixExtractFunctionOmitUnderscorePrefix
-
Rename type declarations, here only list the (maybe) important changes
- [Hooks]
IUseBooleanUpdaters->UseBooleanActionsISetCountdownUpdater->SetCountdownIUseIntervalUpdaters->UseIntervalActionsIUseSimpleIntervalUpdaters->UseSingleIntervalActionsIUseSimpleTimeoutUpdaters->UseSingleTimeoutActionsIUseTimeoutUpdaters->UseTimeoutActionsIUseToggleUpdaters->UseToggleActions
- [Types]
IChildrenProps->ReactChildrenPropsIClientAreaSize->ClientAreaSize
- [Utils/Redux]
IActions->ReduxActionsIDispatchingActions->DispatchingActionsIDispatchingThunks->DispatchingThunksIReducer->ReduxReducerIThunks->ReduxThunksIThunk->ThunkFnIThunkAction->ThunkActionIThunkActionWithArgs-> deleted
- [Hooks]
- New
@tecra/utils-react@tecra/utils-test
- New
babel-jestv27.2.4eslintv8.2.0huskyv7.0.4immerv9.0.6jestv27.2.4jest-circusv27.2.4jest-watch-typeaheadv1.0.0react-routerv6.0.1react-router-domv6.0.1stylelint-config-recess-orderv2.5.0ts-essentialsv9.0.0use-immerv0.6.0
- Upgrade
@fluentui/reactv8.28.2 -> v8.36.0@testing-library/reactv12.0.0 -> v12.1.1@testing-library/react-hooksv7.0.1 -> v7.0.2@types/jestv26.0.24 -> v27.0.2@types/lodashv4.14.172 -> v4.14.175@types/nodev14.17.9 -> v16.10.2@types/reactv17.0.18 -> v17.0.26@typescript-eslint/eslint-pluginv4.30.0 -> v5.4.0@typescript-eslint/experimental-utilsv4.30.0 -> v5.4.0@typescript-eslint/parserv4.30.0 -> v5.4.0@typescript-eslint/scope-managerv4.30.0 -> v5.4.0@typescript-eslint/typesv4.30.0 -> v5.4.0@typescript-eslint/typescript-estreev4.30.0 -> v5.4.0@typescript-eslint/visitor-keysv4.30.0 -> v5.4.0browserslistv4.16.7 -> v4.17.2concurrentlyv6.2.1 -> v6.2.2electronv13.1.7 -> v15.0.0eslint-config-airbnbv18.2.1 -> v19.0.0eslint-config-airbnb-typescriptv14.0.0 -> v16.1.0eslint-plugin-importv2.24.2 -> v2.25.3eslint-plugin-jestv24.5.0 -> v25.2.4eslint-plugin-jsx-a11yv6.4.1 -> v6.5.1eslint-plugin-prettierv3.4.1 -> v4.0.0eslint-plugin-reactv7.26.1 -> v7.27.0eslint-plugin-react-hooksv4.2.0 -> v4.3.0prettierv2.3.2 -> v2.4.1react-reduxv7.2.4 -> v7.2.5sassv1.38.0 -> v1.42.1stylelintv13.13.1 -> v14.1.0stylelint-config-recess-orderv2.5.0 -> v3.0.0stylelint-config-sass-guidelinesv8.0.0 -> v9.0.1
- Remove
eslint-plugin-deprecationv1.2.1
- [Code] Add class
SessionStorage - [Git] Lint code before git commit (in git pre-commit stage)
- [Github] Add issue templates
- [Fluentui] Add
FluentuiProviderand use it inWindow - [Workspaces] Use NPM workspaces to manage source code
- [Test] Use custom jest configurations to do unit test
- [Code] Remove premature performance optimization
- [ESlint] Add new extended configuration
airbnb/hooks - [ESlint] Add rule
@typescript-eslint/no-empty-function - [ESlint] Only enable object variable declarator
- [ESlint] Change rule
@typescript-eslint/naming-convening - [ESlint] Disable rule
react/destructuring-assignment - [ESlint] Disable rule
react/jsx-props-no-spreading - [Github] Use action
setup-node@v2 - [Types] These type declarations are moved into global declaration
ReactStyleFuncIClientAreaSizeIElementPositionSizeIElementSize
- Rename root project name to
tecra - [Deps] Bump lock file to v2
- [Webpack] Delete support for custom path alias (use NPM workspaces instead).
- [Workspaces] Use NPM workspaces to manage source code
- New
@tecra/assets@tecra/electron-common@tecra/electron-main@tecra/electron-renderer@tecra/eslint-config@tecra/hooks@tecra/global-types@tecra/scripts@tecra/stylelint-config@tecra/tsconfigs@tecra/utils-fluentui@tecra/utils-redux
- New
error-oopv0.4.0eslint-config-airbnbv18.2.1lint-stagedv11.1.2stylelintv13.13.1stylelint-config-sass-guidelinesv8.0.0typescript-plugin-css-modulesv3.4.0
- Upgrade
@fluentui/reactv8.21.1 -> v8.28.2@reduxjs/toolkitv1.6.0 -> v1.6.1@testing-library/user-eventv13.1.9 -> v13.2.1@types/jestv26.0.23 -> v26.0.24@types/lodashv4.14.170 -> v4.14.172@types/nodev14.17.4 -> v14.17.9@types/reactv17.0.11 -> v17.0.18@types/react-domv17.0.8 -> v17.0.9@types/react-reduxv7.1.16 -> v7.1.18@typescript-eslint/eslint-pluginv4.28.1 -> v4.30.0@typescript-eslint/experimental-utilsv4.28.1 -> v4.30.0@typescript-eslint/parserv4.28.1 -> v4.30.0@typescript-eslint/scope-managerv4.28.1 -> v4.30.0@typescript-eslint/typesv4.28.1 -> v4.30.0@typescript-eslint/typescript-estreev4.28.1 -> v4.30.0@typescript-eslint/visitor-keysv4.28.1 -> v4.30.0browserslistv4.16.6 -> v4.16.7chalkv4.1.1 -> v4.1.2concurrentlyv6.2.0 -> v6.2.1eslint-config-airbnb-typescriptv12.3.1 -> v14.0.0eslint-plugin-importv2.23.4 -> v2.24.2eslint-plugin-jestv24.3.6 -> v24.4.0eslint-plugin-prettierv3.4.0 -> v3.4.1eslint-plugin-reactv7.24.0 -> v7.25.1react-scrollbars-customv4.0.25 -> v4.0.27sassv1.35.1 -> v1.38.0typescriptv4.3.5 -> v4.4.2web-vitalsv2.0.1 -> v2.1.0webpack-cliv4.7.2 -> v4.8.0
- Remove
@types/speed-measure-webpack-pluginv1.3.3node-errors-prov0.2.0speed-measure-webpack-pluginv1.5.0typed-css-modulesv0.6.8
- [Common]
- Add new type
Optional<T> - Add util
waitto wait for some time - Add declaration file
common.d.ts
- Add new type
- [Build]
- Add internal npm scripts
_cra-build,_cra-dev,_cra-test,_main-buildand_main-dev - Add new npm script
run-unpackedto execute the unpacked electron application built byelectron-builder
- Add internal npm scripts
- [Github-Actions]
- Build windows installer and publish it if need
- Do coverage tests
- [IPC] Add new IPC wrapper
IpcMainWrapperandIpcRendererWrapper - [RUtils] - DOM
- Improve the performance of
CanvasUtils - Add new methods in
CanvasUtils:createLinePainter,createRectPainter
- Improve the performance of
- [RUtils/React]
- New React Hooks with tests
useBooleanuseConstuseConstFnuseDelayFnuseDoubleTriggeruseForceUpdateuseImmediateFocususeIntervaluseIsFocuseduseIsHovereduseMountusePrevioususeSimpleIntervaluseSimpleTimeoutuseTimeoutuseToggleuseUnmountuseWhyDidYouUpdate
- Add interface
ReactChildrenProp
- New React Hooks with tests
- [RUtils/Fluentui]
- Add namespaces
FluentuiEventsandFluentuiStyles - Add namespaces
FluentuiStyleFunctions,FluentuiTokensandFluentuiTokenFunctions
- Add namespaces
- [RUtils/Redux]
- Add
thunkCreattorFactoryto create thunks
- Add
- [UI] - Main Window
- Add tests for react components
- Add tests for redux reducers
- Add css properties
overflowanduser-selectinto containerClientArea
- Add
AppInfoto collect applicatio infomation - Add declaration file
renderer.d.ts
- [Build] Create folder
workingbeforebuildordev - [Build] Only do incremental building for scripts
- [Build] Change
browserslistto 'last 9 chrome versions' - [Build] Typescript: do not skip lib check
- [Eslint] Set rule
@typescript-eslint/no-explicit-anyto warn level in order to enable stricter type limitation - [Eslint] Set rule
prefer-destructuringto disable the prefer of array destructuring - [Redux] Fix
useDispatchingThunksnot correctly pass arguments - [Test] Fix test for react
- [Test] Ignore messages we output
- [Test] Rename setupTest.ts to
test.setup.ts, rename reportWebVitals.ts toreport-web-vitals.ts - [UI] Improve ui performance, rename
InfoDisplaytoIntroductionwhich will be displayed only after prepared - [UI] Change
LocalStorageto be a class
- [Common] Rename 'src/shared' to 'src/common', change import path aliases
- [Public] Change public assets, add
icon.ico - [RUtils] Delete
optionsargument in oldCanvasUtilsmethods - [RUtils] Delete
IStrictStyleandmergeStrictStyles, move fluentui default theme intoRUtils/Fluentui
- New
@testing-library/react-hooksv7.0.1@types/react-test-rendererv17.0.1@typescript-eslint/experimental-utilsv4.28.1@typescript-eslint/scope-managerv4.28.1@typescript-eslint/typesv4.28.1@typescript-eslint/typescript-estreev4.28.1@typescript-eslint/visitor-keysv4.28.1eslint-plugin-deprecationv1.2.1react-test-rendererv17.0.2
- Upgrade
@fluentui/reactv8.14.13 -> v8.21.1@reduxjs/toolkitv1.5.0 -> v1.6.1@testing-library/jest-domv5.11.4 -> v5.14.1@testing-library/reactv11.1.0 -> v12.0.0@testing-library/user-eventv12.1.10 -> v13.1.9@types/jestv26.0.21 -> v26.0.23@types/lodashv4.14.169 -> v4.14.170@types/nodev14.17.3 -> v14.17.4@types/react-domv17.0.7 -> v17.0.8@typescript-eslint/eslint-pluginv4.24.0 -> v4.28.1@typescript-eslint/parserv4.24.0 -> v4.28.1concurrentlyv6.1.0 -> v6.2.0electronv13.1.1 -> v13.1.7electron-builderv22.10.5 -> v22.11.7eslint-plugin-importv2.23.3 -> v2.23.4eslint-plugin-reactv7.23.2 -> v7.24.0prettierv2.3.1 -> v2.3.2react-reduxv7.2.3 -> v7.2.4sassv1.34.0 -> v1.35.1ts-jestv26.5.4 -> v26.5.6ts-loaderv8.0.18 -> v8.3.0typed-css-modulesv0.6.5 -> v0.6.8typescriptv4.3.3 -> v4.3.5webpack-cliv4.5.0 -> v4.7.2
- Remove
ts-jestv26.5.6
- Main Process
- Add
AppPathsto get appPath and srcPath
- Add
- Main Window
- Add
preparedproperty into main redux store and itsusePreparedhook - Dispatch
preparethunk when the app start - Delete serviceWorker, add reportWebVitals to use
web-vitals
- Add
- Shared
- Add
Timer - Improve type util
DeepReadonlyto support making more structures deep readonly - Add type util
ExcludeUnderscorePrefix - Add type util
OmitUnderscorePrefix
- Add
- Redux
- Add
IThunkandIAsyncThunktype definitions - Re-export
WritableDraftfromimmer/dist/types/types-external
- Add
- Utils
- Add
IMarginandIMarginInfo, and their transformer, addmergeToGridTemplate
- Add
- Compile
- Make typescript more strict
- Rename npm script
build-profiletobuild:profile - Enable typescript incremental compilation
- Move webpack plugins into scripts, rename them and use typescript to code them
- Set SMP's format to
human - Fix npm script
build:profileto enable profiling in the production build - Fix aliases of renderer webpack
- Delete
custom-gitconfig.ts - Move webpack configs into scripts, and use typescript to code them
- Move typescript configs into scripts
- Change electron-builder configs to build smaller installer
- Main Window
- Change redux store structure
- Simplify the exports from redux
- Rename
MainPromiseThunktoMainAsyncThunk
- Eslint
- Allow enum member to be PascalCase style
- Add rule
@typescript-eslint/return-awaitatin-try-catch - Add rule
import/no-default-exportaterror - Add rule
import/no-deprecatedatwarn - Set rule
import/no-cycletoerror
- Move
IDotPositionandIRectPositioninto Utils/DOM - Use typescript to write scripts, compile them before build or dev
- Redux
- Delete
ReduxHooksFactory, usecreateTypedSelector,useDispatchingActionsanduseDispatchingThunksinstead - Support to only export non-internal actions out of redux
- Delete
- Delete
windowIpc, usemainIpcandrendererIpcinstead
- Use
lodashrather thanlodash-es - New
@typescript-eslint/parserv4.24.0web-vitalsv2.0.1@types/speed-measure-webpack-pluginv1.3.3
- Upgrade
@fluentui/reactfrom v8.8.0 to v8.14.13@reduxjs/toolkitfrom v1.5.0 to v1.5.1@testing-library/jest-domfrom v4.2.4 to v5.11.4@testing-library/reactfrom v9.3.2 to v11.1.0@testing-library/user-eventfrom v7.1.2 to v12.1.10@typescript-eslint/eslint-pluginfrom v4.19.0 to v4.24.0@types/nodefrom v14.14.32 to v14.17.3@types/reactfrom v17.0.3 to v17.0.11@types/react-domfrom v17.0.3 to v17.0.7chalkfrom v4.1.0 to v4.1.1concurrentlyfrom v6.0.0 to v6.1.0electronfrom v12.0.5 to v13.1.1electron-devtools-installerfrom v3.1.1 to v3.2.0eslint-config-prettierfrom v8.1.0 to v8.3.0eslint-plugin-importfrom v2.22.1 to v2.23.3eslint-plugin-jestfrom v24.3.2 to v24.3.6eslint-plugin-prettierfrom v3.3.1 to v3.4.0eslint-plugin-reactfrom v7.23.1 to v7.23.2prettierfrom v2.2.1 to v2.3.1sassfrom v1.32.8 to v1.34.0speed-measure-webpack-pluginfrom v1.4.2 to v1.5.0
- Remove
immerv9.0.1
- Move dependency
react-scriptsto be a dev dependency
- NPM
- Add npm script
prettyto use prettier to format all code
- Add npm script
- Redux
- Add
useReduxDispatchedActionsanduseReduxDispatchedThunkshooks, the dispatched actions and dispatched thunks will be cached inReduxHooksFactory - Add
ComponentsandContainersfolders - Add
MainPromiseThunktype - Add support to infer the return type of async thunks while using
useReduxDispatchedThunks
- Add
- Types
- Add new types utils
Object,ObjectStrandObjectNum - Add new types for renderer
IClientAreaSizeIDotPositionIElementPositionIElementSizeIOffsetIRectPosition
- Add new types utils
- Frameless Window
- Now only provide an initial
FramelessWindowandTitleBar, the client area size will be provided fromTitleBar
- Now only provide an initial
- Fluent UI
- Add event type alias for the following components, see
src/renderer/Utils/Fluentui/EventsInProps.ts:- ChoiceGroup
- ComboBox
- ContextualMenu
- Dropdown
- List
- Pivot
- TextField
- Toggle
- Add event type alias for the following components, see
- Hooks
- New hooks:
useClientAreaSizeuseCountdown
- New hooks:
- DOM
- Add
CanvasUtilsto operate canvas dom, it contains the following methods:drawLinesdrawLinesOffsetfillRectsfillRectsOffset
- Add
- Git
- Ignore _.cjs, _.js and *.mjs in src
- Compilation
- Disable
eslint-webpack-plugincompletely
- Disable
- Eslint
- Disable
no-bitwiserule - Disable
no-constant-conditionrule
- Disable
- Redux
- Rename type
ReducertoMainReducer - Rename type
ThunktoMainThunk - Disable
immutableCheckandserializableCheckwhen in development
- Rename type
- Move
ColorTransformer,npm2pxandnpm2ptinto#RUtils/Theme - Move
WindowIpcinto#MUtils/Ipc - Rename
src/renderer/Maintosrc/renderer/MainWindow - Rename
src/renderer/MainWindow/reduxtosrc/renderer/MainWindow/Redux - Delete interface
ClientAreaSize - Delete
AbstractClientArea, now your own client-area containers should not be inherited fromAbstractClientArea - Delete custom hook
useReduxDispatch, please useuseReduxDispatchedActionsoruseReduxDispatchedThunksinstead - Delete
mapMainDispatchToProps
- Upgrade
- Update 'electron' from v12.0.0 to v12.0.5
- Compilation
- Add new NPM script
build-profileto enable profiling in production build
- Add new NPM script
- React
- Set environment variable
INLINE_RUNTIME_CHUNKasfalseto disable the runtime chunk inlining - Set environment variable
PUBLIC_URLas./to avoid react loading thehomepagevalue of package.json while compiling
- Set environment variable
- Redux
- Add
configureGlobalStoreutil function to help creating a global store
- Add
- Eslint
- Add
eslint-plugin-nodeinto eslint configs - Set
roottotrue
- Add
- Add css id
ThemeProviderfor fluentui's ThemeProvider - Add
ContainandContainedtype util definitions - Use SCSS instead of fluentui css-in-js to apply CSS styles
- Git
- Update .gitattributes
- Compilation
- Refactor base webpack configs
- Stop hacking eslint configs in renderer webpack configs
- Update typescript configs
- Use npm instead of yarn to manage repository
- Change user name from 'YSoftwareTech' to 'YSoftwareRepo'
- New
- Add 'eslint-config-prettier' v8.1.0
- Add 'prettier' v2.2.1
- Add 'sass' v1.32.8
- Add 'typed-css-modules' v0.6.5
- Upgrade
- Update '@fluentui/react' from v8.0.0-beta.49 to v8.8.0
- Update '@types/jest' from v24.0.0 to v26.0.21
- Update '@types/node' from v12.19.9 to v14.14.32
- Update '@types/react' from v17.0.0 to v17.0.3
- Update '@types/react-dom' from v17.0.0 to v17.0.3
- Update '@types/react-redux' from v7.1.15 to v7.1.16
- Update '@typescript-eslint/eslint-plugin' from v4.14.1 to v4.19.0
- Update 'concurrently' from v5.3.0 to v6.0.0
- Update 'electron' from v11.2.1 to v12.0.0
- Update 'electron-builder' from v22.9.1 to v22.10.5
- Update 'eslint-plugin-jest' from v24.1.3 to v24.3.2
- Update 'eslint-plugin-prettier' from v3.3.0 to v3.3.1
- Update 'eslint-plugin-react' from v7.21.5 to v7.23.1
- Update 'immer' from v8.0.0 to v9.0.1
- Update 'react' from v17.0.1 to v17.0.2
- Update 'react-app-rewired' from v2.1.6 to v2.1.8
- Update 'react-dom' from v17.0.1 to v17.0.2
- Update 'react-redux' from v7.2.2 to v7.2.3
- Update 'react-scripts' from v4.0.1 to v4.0.3
- Update 'speed-measure-webpack-plugin' from v1.3.3 to v1.4.2
- Update 'ts-jest' from v26.1.3 to v26.5.4
- Update 'ts-loader' from v8.0.1 to v8.0.18
- Update 'typescript' from v4.1.5 to v4.2.3
- Update 'webpack-cli' from v3.3.12 to v4.5.0
- Compilation
- Add source map when compiling main code by webpack
- Add npm scripts hooks
prebuildandpredev, to edit git configs to only permit fast-forward pull - Add
electron-devtools-installerto install extensions in development mode
- Environment
- Add dependency
node-errors-proto support more kinds of errors
- Add dependency
- Redux
- Add
global-stateto improving the performance of redux - Add
createGlobalEntityAdapterto use adapters in global state, the adapters created bycreateEntityAdapter(provided by@reduxjs/toolkit) cannot be used out of redux store - Add
ReduxHooksFactory, it returnsuseReduxDispatchanduseReduxSelectoruseReduxDispatchan custom hook to use dispatch in functional containers, pass actions and thunks as the second parameteruseReduxSelectoran custom hook to use the global state in functional containers
- Add
IExactlyActionsDestructuringandIExactlyThunksDestructuringto do a strict type check formapMainDispatchToPropsanduseReduxDispatch
- Add
- Fluentui
- Add
IStrictStyleto do a strict type check for styles - Add
mergeStrictStylesto useIStrictStyle - Use
ThemeProviderto provide theme
- Add
- Transformer
- Add
num2pxandnum2ptutils
- Add
- WindowManager
- Add
WindowManagerto manage multi windows - Delete the old window managing solution
- Add
- Ipc
- Delete all ipc wrappers
- Environment
- Restructure project, change path aliases
- Update dependency
@fluentui/reactfrom v7.157.1 to v8.0.0-beta.49 - Update dev dependency
eslint-config-airbnb-typescriptfrom v12.0.0 to v12.3.1 - Change line length limit, from 100 to 120
- Fluentui
- Update fluentui styles and render utils
- Redux
- Rename
IMapActionsToPropstoIActionsDestructuring - Rename
IMapThunksToPropstoIThunksDestructuring
- Rename
- Eslint
- Allow 'PascalCase' naming for variable
- Disable
prefer-arrow-callback - Enable
react-hooks/rules-of-hooksandreact-hooks/exhaustive-deps
- Scripts
- Delete 'utils.mjs', move the util functions into 'app.mjs'
- dependencies
- @fluentui/react: ^8.0.0-beta.49
- @reduxjs/toolkit: ^1.5.0
- immer: ^8.0.0
- node-errors-pro: ^0.2.0
- react: ^17.0.1
- react-dom: ^17.0.1
- react-redux: ^7.2.2
- react-scripts: 4.0.1
- react-scrollbars-custom: ^4.0.25
- dev dependencies
- @testing-library/jest-dom: ^4.2.4
- @testing-library/react: ^9.3.2
- @testing-library/user-event: ^7.1.2
- @types/electron-devtools-installer: ^2.2.0
- @types/jest: ^24.0.0
- @types/lodash-es: ^4.17.4
- @types/node: ^12.19.9
- @types/react: ^17.0.0
- @types/react-dom: ^17.0.0
- @types/react-redux: ^7.1.15
- @typescript-eslint/eslint-plugin: ^4.14.1
- chalk: ^4.1.0
- concurrently: ^5.3.0
- electron: 11.2.1
- electron-builder: ^22.9.1
- electron-devtols-installer: ^3.1.1
- eslint-config-airbnb-typescript: ^12.3.1
- eslint-plugin-import: ^2.22.1
- eslint-plugin-jest: ^24.1.3
- eslint-plugin-jsx-a11y: ^6.4.1
- eslint-plugin-node: ^11.1.0
- eslint-plugin-prettier: ^3.3.0
- eslint-plugin-react: ^7.21.5
- eslint-plugin-react-hooks: ^4.2.0
- lodash-es: ^4.17.20
- react-app-rewired: ^2.1.6
- rimraf: ^3.0.2
- speed-measure-webpack-plugin: ^1.3.3
- ts-jest: ^26.1.3
- ts-loader: ^8.0.1
- typescript: ^4.1.3
- webpack-cli: ^3.3.12
- create-react-app@4.0.1
- electron@11.1.0
- fluentui@7.155.3
- react@^17.0.1
- typescript@^4.1.3
- custom eslint configurations
- custom webpack features
- concurrently build main process code and renderer process code in development compiling mode
- build main process code firstly and build renderer process code secondly in production compiling mode
- support automatically reloading electron process in development compiling mode
- support path alias in both in main process code and renderer process code
- support compiling common code when compiling main process code or renderer process code, the common code should be placed in
src/shared - use
speed-measure-webpack-pluginto show the timecost info in production compiling mode
- custom webpack plugins
- [webpack-electron-reload]
Automatically restart electron process after updating code, and set the cwd to the
workingfolder - [webpack-mkdir] Automatically create working directory before starting electron process
- [webpack-electron-reload]
Automatically restart electron process after updating code, and set the cwd to the
- custom type definitions
- ReactStyleFunc
- IReducer, IMapActionsToProps and IMapThunkToProps
- type definitions for fluentui props and fluentui styles
- create-react-app@4.0.1
- electron@11.1.0
- react@^17.0.1
- typescript@^4.1.3
- custom eslint configurations
- custom webpack features
- concurrently build main process code and renderer process code in development compiling mode
- build main process code firstly and build renderer process code secondly in production compiling mode
- support automatically reloading electron process in development compiling mode
- support path alias in both in main process code and renderer process code
- support compiling common code when compiling main process code or renderer process code, the common code should be placed in
src/shared - use
speed-measure-webpack-pluginto show the timecost info in production compiling mode
- custom webpack plugins
- [webpack-electron-reload]
Automatically restart electron process after updating code, and set the cwd to the
workingfolder - [webpack-mkdir] Automatically create working directory before starting electron process
- [webpack-electron-reload]
Automatically restart electron process after updating code, and set the cwd to the
- custom type definitions
- ReactStyleFunc
- IReducer, IMapActionsToProps and IMapThunkToProps