Skip to content
This repository was archived by the owner on Sep 6, 2022. It is now read-only.

Commit b59665f

Browse files
authored
Fixes&maintenance (#64)
### Many fixes, updates and maintenances... **Changes:** - Synched with the `dev` of the original boilerplate - Fixed tree-shaking issues - Fixed `internal/scripts` for setup and cleaning - Updated version to `4.1` - Updated docs to contain typescript-only documentation - Improved `internals/scripts/generate-templates-for-linting.js` script - Added `babel-loader` after `ts-loader` - Updated `README` - Updated package versions and fixed the new versions' problems
1 parent 0dee563 commit b59665f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+6870
-8285
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module.exports = {
1111
'airbnb-typescript',
1212
'prettier',
1313
'prettier/react',
14+
'prettier/@typescript-eslint'
1415
],
1516
plugins: [
1617
'prettier',

.prettierrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"useTabs": false,
55
"semi": true,
66
"singleQuote": true,
7-
"trailingComma": "all"
7+
"trailingComma": "all",
8+
"arrowParens": "avoid"
89
}

Changelog.md

Lines changed: 0 additions & 347 deletions
This file was deleted.

README.md

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,17 @@
8484

8585
</div>
8686

87-
This is the **TYPESCRIPT** implementation of the original [react-boilerplate](https://github.com/react-boilerplate/react-boilerplate) with extra features and powers of `Typescript`
87+
This is the **TYPESCRIPT** implementation of the original [**react-boilerplate**](https://github.com/react-boilerplate/react-boilerplate) with extra features and powers of `Typescript`
8888

8989
> ⚠️ Please refer to the [react-boilerplate](https://github.com/react-boilerplate/react-boilerplate) for the details and the documentation
9090
9191
---
9292

93-
Boilerplate version: `4.1`
93+
Boilerplate version: [**`4.1`**](https://github.com/react-boilerplate/react-boilerplate-typescript/releases)
9494

95-
#### Brief overview of the typescript version
95+
## Overview
9696

97-
- Detailed documentation: [**Typescript docs**](docs/general/typescript.md)
98-
99-
* Typescript practices heavily depends on the guide -> <a href="https://github.com/piotrwitek/react-redux-typescript-guide">react-typescript-guide</a>
97+
- For the detailed documentation: [**Typescript Docs**](docs/README.md)
10098

10199
- Example projects built with this boilerplate `(if you are looking for advanced examples)`:
102100

@@ -110,11 +108,32 @@ Boilerplate version: `4.1`
110108

111109
## Getting Started & Features & Documentations and More...
112110

113-
⚠️
114-
Refer to the [react-boilerplate](https://github.com/react-boilerplate/react-boilerplate)
111+
You can find all the documentation in the original [**react-boilerplate**](https://github.com/react-boilerplate/react-boilerplate)
112+
113+
For the typescript related documentation: [**Typescript Docs**](docs/README.md)
114+
115+
## Quick start
116+
117+
1. Make sure that you have Node.js v10.13.0 and npm v6.4.1 or above installed.
118+
2. Clone this repo using `git clone --depth=1 https://github.com/react-boilerplate/react-boilerplate-typescript.git <YOUR_PROJECT_NAME>`
119+
3. Move to the appropriate directory: `cd <YOUR_PROJECT_NAME>`.<br />
120+
4. Run `npm run setup` in order to install dependencies and clean the git repo.<br />
121+
_At this point you can run `npm start` to see the example app at `http://localhost:3000`._
122+
5. Run `npm run clean` to delete the example app.
123+
124+
Now you're ready to rumble!
115125

116126
---
117127

128+
## Ongoing Work
129+
130+
In between [releases](https://github.com/react-boilerplate/react-boilerplate-typescript/releases), we work on the `dev` branch and rarely ever update `master`. For that reason, it sometimes look like the repo isn't actively maintained. This isn't the case, React Boilerplate is alive and kicking.
131+
132+
Please feel free to check out:
133+
134+
- our [`dev` branch](https://github.com/react-boilerplate/react-boilerplate-typescript/tree/dev) for the latest updates. You are always welcome to use it as the basis for your project. We only merge to `dev` projects which are fully ready.
135+
- our open [issues](https://github.com/react-boilerplate/react-boilerplate/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) and [pull requests](https://github.com/react-boilerplate/react-boilerplate/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc) to see what we are currently working on. Suggestions and contributions are always welcome!
136+
118137
<sub><i>Keywords: React Boilerplate, Typescript, React.js, Redux, Hot Reloading, ESNext, Babel, react-router, Offline First, ServiceWorker, `styled-components`, redux-saga, FontFaceObserver</i></sub>
119138

120139
## Contributors
@@ -143,50 +162,31 @@ This project follows the [all-contributors](https://github.com/all-contributors/
143162

144163
This project would not be possible without the support of these amazing folks. [**Become a sponsor**](https://opencollective.com/react-boilerplate) to get your company in front of thousands of engaged react developers and help us out!
145164

146-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/0/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/0/avatar.svg"></a>
147-
148-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/1/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/1/avatar.svg"></a>
149-
150-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/2/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/2/avatar.svg"></a>
151-
152-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/3/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/3/avatar.svg"></a>
153-
154-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/4/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/4/avatar.svg"></a>
155-
156-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/5/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/5/avatar.svg"></a>
157-
158-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/6/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/6/avatar.svg"></a>
159-
160-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/7/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/7/avatar.svg"></a>
161-
162-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/8/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/8/avatar.svg"></a>
163-
164-
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/9/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/9/avatar.svg"></a>
165+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/0/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/0/avatar.svg"></a>
166+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/1/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/1/avatar.svg"></a>
167+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/2/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/2/avatar.svg"></a>
168+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/3/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/3/avatar.svg"></a>
169+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/4/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/4/avatar.svg"></a>
170+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/5/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/5/avatar.svg"></a>
171+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/6/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/6/avatar.svg"></a>
172+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/7/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/7/avatar.svg"></a>
173+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/8/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/8/avatar.svg"></a>
174+
<a href="https://opencollective.com/react-boilerplate/bronze-sponsor/9/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/bronze-sponsor/9/avatar.svg"></a>
165175

166176
---
167177

168-
<a href="https://opencollective.com/react-boilerplate/backer/0/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/0/avatar.svg"></a>
169-
170-
<a href="https://opencollective.com/react-boilerplate/backer/1/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/1/avatar.svg"></a>
171-
172-
<a href="https://opencollective.com/react-boilerplate/backer/2/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/2/avatar.svg"></a>
173-
174-
<a href="https://opencollective.com/react-boilerplate/backer/3/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/3/avatar.svg"></a>
175-
176-
<a href="https://opencollective.com/react-boilerplate/backer/4/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/4/avatar.svg"></a>
177-
178-
<a href="https://opencollective.com/react-boilerplate/backer/5/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/5/avatar.svg"></a>
179-
180-
<a href="https://opencollective.com/react-boilerplate/backer/6/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/6/avatar.svg"></a>
181-
182-
<a href="https://opencollective.com/react-boilerplate/backer/7/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/7/avatar.svg"></a>
183-
184-
<a href="https://opencollective.com/react-boilerplate/backer/8/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/8/avatar.svg"></a>
185-
186-
<a href="https://opencollective.com/react-boilerplate/backer/9/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/9/avatar.svg"></a>
178+
<a href="https://opencollective.com/react-boilerplate/backer/0/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/0/avatar.svg"></a>
179+
<a href="https://opencollective.com/react-boilerplate/backer/1/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/1/avatar.svg"></a>
180+
<a href="https://opencollective.com/react-boilerplate/backer/2/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/2/avatar.svg"></a>
181+
<a href="https://opencollective.com/react-boilerplate/backer/3/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/3/avatar.svg"></a>
182+
<a href="https://opencollective.com/react-boilerplate/backer/4/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/4/avatar.svg"></a>
183+
<a href="https://opencollective.com/react-boilerplate/backer/5/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/5/avatar.svg"></a>
184+
<a href="https://opencollective.com/react-boilerplate/backer/6/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/6/avatar.svg"></a>
185+
<a href="https://opencollective.com/react-boilerplate/backer/7/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/7/avatar.svg"></a>
186+
<a href="https://opencollective.com/react-boilerplate/backer/8/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/8/avatar.svg"></a>
187+
<a href="https://opencollective.com/react-boilerplate/backer/9/website" target="_blank"><img src="https://opencollective.com/react-boilerplate/backer/9/avatar.svg"></a>
187188

188189
## License
189190

190191
This project is licensed under the MIT license, Copyright (c) 2019 Maximilian
191-
192192
Stoiber. For more information see `LICENSE.md`.

app/app.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { ConnectedRouter } from 'connected-react-router';
1616
import FontFaceObserver from 'fontfaceobserver';
1717
import history from 'utils/history';
1818
import 'sanitize.css/sanitize.css';
19+
import * as OfflinePluginRuntime from 'offline-plugin/runtime';
1920

2021
// Import root app
2122
import App from 'containers/App';
@@ -29,10 +30,10 @@ import 'file-loader?name=.htaccess!./.htaccess';
2930

3031
import { HelmetProvider } from 'react-helmet-async';
3132

32-
import { translationMessages } from 'i18n';
3333
import configureStore from './configureStore';
3434

3535
// Import i18n messages
36+
import { translationMessages } from 'i18n';
3637

3738
// Observe loading of Open Sans (to remove open sans, remove the <link> tag in
3839
// the index.html file and this observer)
@@ -83,7 +84,7 @@ if (!(window as any).Intl) {
8384
import('intl/locale-data/jsonp/en.js'),
8485
import('intl/locale-data/jsonp/de.js'),
8586
]),
86-
) // eslint-disable-line prettier/prettier
87+
)
8788
.then(() => render(translationMessages))
8889
.catch(err => {
8990
throw err;
@@ -96,6 +97,5 @@ if (!(window as any).Intl) {
9697
// it's not most important operation and if main code fails,
9798
// we do not want it installed
9899
if (process.env.NODE_ENV === 'production') {
99-
// eslint-disable-next-line global-require
100-
require('offline-plugin/runtime').install();
100+
OfflinePluginRuntime.install();
101101
}

app/components/Header/banner.jpg

-59 KB
Loading

app/components/List/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ interface Props {
1111

1212
function List(props: Props) {
1313
const ComponentToRender = props.component;
14-
let content = <div /> as JSX.Element | JSX.Element[];
14+
let content = (<div />) as JSX.Element | JSX.Element[];
1515

1616
// If we have items, render them
1717
if (props.items) {

app/components/LoadingIndicator/Circle.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const Circle = (props: Props) => {
2626
left: 0;
2727
top: 0;
2828
${props.rotate &&
29-
`
29+
`
3030
-webkit-transform: rotate(${props.rotate}deg);
3131
-ms-transform: rotate(${props.rotate}deg);
3232
transform: rotate(${props.rotate}deg);
@@ -40,7 +40,7 @@ const Circle = (props: Props) => {
4040
border-radius: 100%;
4141
animation: ${circleFadeDelay} 1.2s infinite ease-in-out both;
4242
${props.delay &&
43-
`
43+
`
4444
-webkit-animation-delay: ${props.delay}s;
4545
animation-delay: ${props.delay}s;
4646
`};

app/containers/App/selectors.ts

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,19 @@ const selectGlobal = (state: ApplicationRootState) => state.global;
1010
const selectRoute = (state: ApplicationRootState) => state.router;
1111

1212
const makeSelectCurrentUser = () =>
13-
createSelector(
14-
selectGlobal,
15-
globalState => globalState.currentUser,
16-
);
13+
createSelector(selectGlobal, globalState => globalState.currentUser);
1714

1815
const makeSelectLoading = () =>
19-
createSelector(
20-
selectGlobal,
21-
globalState => globalState.loading,
22-
);
16+
createSelector(selectGlobal, globalState => globalState.loading);
2317

2418
const makeSelectError = () =>
25-
createSelector(
26-
selectGlobal,
27-
globalState => globalState.error,
28-
);
19+
createSelector(selectGlobal, globalState => globalState.error);
2920

3021
const makeSelectRepos = () =>
31-
createSelector(
32-
selectGlobal,
33-
globalState => globalState.userData.repos,
34-
);
22+
createSelector(selectGlobal, globalState => globalState.userData.repos);
3523

3624
const makeSelectLocation = () =>
37-
createSelector(
38-
selectRoute,
39-
routeState => routeState.location,
40-
);
25+
createSelector(selectRoute, routeState => routeState.location);
4126

4227
export {
4328
selectGlobal,

app/containers/App/tests/__snapshots__/index.test.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`<App /> should render and match the snapshot 1`] = `
4-
<ForwardRef(styled.div)>
4+
<styled.div>
55
<Helmet
66
defaultTitle="React.js Boilerplate"
77
defer={true}
@@ -30,5 +30,5 @@ exports[`<App /> should render and match the snapshot 1`] = `
3030
</Switch>
3131
<Footer />
3232
<GlobalStyleComponent />
33-
</ForwardRef(styled.div)>
33+
</styled.div>
3434
`;

0 commit comments

Comments
 (0)