Skip to content

Commit f26dc0e

Browse files
committed
add prettier, tslint config
1 parent f1b169b commit f26dc0e

14 files changed

+166
-99
lines changed

package.json

+12-7
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@
1111
"start:prod": "webpack-dev-server -p --progress --colors --port 3001 --open"
1212
},
1313
"license": "MIT",
14+
"optionalDependencies": {
15+
"~/": "./src"
16+
},
1417
"devDependencies": {
1518
"@types/axios": "^0.14.0",
1619
"@types/classnames": "2.2.3",
1720
"@types/history": "4.6.2",
1821
"@types/node": "^8.0.53",
1922
"@types/prop-types": "^15.5.3",
23+
"@types/react": "^16.0.25",
2024
"@types/react-dom": "16.0.3",
2125
"@types/react-redux": "5.0.13",
22-
"@types/react-router-dom": "^4.2.3",
2326
"@types/react-router": "4.0.18",
24-
"@types/react": "^16.0.25",
27+
"@types/react-router-dom": "^4.2.3",
2528
"@types/redux-actions": "2.2.2",
2629
"@types/redux-thunk": "^2.1.0",
27-
"@types/webpack-env": "1.13.2",
2830
"@types/webpack": "3.8.1",
31+
"@types/webpack-env": "1.13.2",
2932
"awesome-typescript-loader": "^3.4.0",
3033
"base64-inline-loader": "^1.1.0",
3134
"css-loader": "^0.28.7",
@@ -35,25 +38,27 @@
3538
"html-webpack-plugin": "^2.30.1",
3639
"image-webpack-loader": "^4.1.0",
3740
"node-sass": "^4.7.2",
41+
"postcss": "^6.0.14",
3842
"postcss-browser-reporter": "^0.5.0",
3943
"postcss-cssnext": "^3.0.2",
4044
"postcss-import": "^11.0.0",
4145
"postcss-loader": "^2.0.8",
4246
"postcss-reporter": "^5.0.0",
4347
"postcss-url": "^7.2.1",
44-
"postcss": "^6.0.14",
48+
"prettier": "^1.13.7",
4549
"react-hot-loader": "^3.1.3",
4650
"redux-devtools-extension": "^2.13.2",
4751
"sass-loader": "^6.0.6",
4852
"style-loader": "^0.19.0",
53+
"tslint": "^5.11.0",
4954
"tslint-config-prettier": "^1.13.0",
5055
"tslint-eslint-rules": "^5.3.1",
56+
"tslint-plugin-prettier": "^1.3.0",
5157
"tslint-react": "^3.6.0",
52-
"tslint": "^5.11.0",
5358
"typescript": "^2.6.1",
5459
"url-loader": "^0.6.2",
55-
"webpack-dev-server": "^2.11.1",
56-
"webpack": "^3.11.0"
60+
"webpack": "^3.11.0",
61+
"webpack-dev-server": "^2.11.1"
5762
},
5863
"dependencies": {
5964
"axios": "^0.18.0",
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.header {
2+
flex: .1;
3+
margin: 2% auto 0;
4+
background: #c6c6c6;
5+
padding: 10px 25px;
6+
display: flex;
7+
justify-content: center;
8+
flex-direction: column;
9+
font-size: 39px;
10+
max-width: 1200px;
11+
width: 100%;
12+
}
13+
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import * as React from 'react'
2+
import './index.scss'
3+
4+
export default class Header extends React.Component {
5+
public render() {
6+
return (
7+
<div className="header">
8+
<span>header</span>
9+
</div>
10+
)
11+
}
12+
}
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import * as PropTypes from 'prop-types'
2+
import * as React from 'react'
3+
4+
export default class Loading extends React.Component {
5+
public static propTypes = {
6+
children: PropTypes.node
7+
}
8+
9+
public render() {
10+
const { children } = this.props
11+
12+
return (
13+
<div className="loading">
14+
{children || 'Loading'}
15+
</div>
16+
)
17+
}
18+
}

src/components/pages/Home/index.tsx

+9-12
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
import * as React from 'react'
22

3-
export default class Home extends React.Component{
4-
5-
6-
public render(){
7-
8-
return (
9-
<div className="page home">
10-
<span>lol</span>
11-
</div>
12-
)
13-
}
14-
}
3+
export default class Home extends React.Component {
4+
public render() {
5+
return (
6+
<div className="page home">
7+
<span>lol</span>
8+
</div>
9+
)
10+
}
11+
}

src/index.tsx

+16-23
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,37 @@
1-
/* tslint:disable:jsx-no-lambda tslint:disable:no-submodule-imports */
2-
3-
import {createBrowserHistory} from 'history'
1+
import { createBrowserHistory } from 'history'
42
import 'moment/locale/ru'
53
import * as React from 'react'
64
import * as ReactDOM from 'react-dom'
7-
import {Provider} from 'react-redux'
8-
import {Route, Switch} from 'react-router'
9-
import { BrowserRouter, Link} from 'react-router-dom'
10-
import {ModalContainer, ModalRoute} from 'react-router-modal'
11-
import Header from './components/shared/Header'
12-
import {configureStore} from './store'
13-
import './style.scss'
14-
import {AsyncComponent} from './utils/AsyncComponentLoader'
5+
import { Provider } from 'react-redux'
6+
import { Route, Switch } from 'react-router'
7+
import { BrowserRouter, Link } from 'react-router-dom'
8+
import Header from '~/components/common/Header'
9+
10+
import { configureStore } from '~/store'
11+
import '~/style.scss'
12+
import { AsyncComponent } from '~/utils/AsyncComponentLoader'
1513

1614
const store = configureStore()
1715
export const history = createBrowserHistory()
1816

1917
const Home = () => (
2018
<AsyncComponent
21-
moduleProvider={() => import(/* webpackMode: "lazy", webpackChunkName: "home" */ './components/pages/Home')}
19+
moduleProvider={() =>
20+
import(/* webpackMode: "lazy", webpackChunkName: "home" */ '~/components/pages/Home')
21+
}
2222
/>
2323
)
2424

25-
26-
2725
ReactDOM.render(
2826
<Provider store={store}>
2927
<BrowserRouter>
30-
<div className='app-content'>
31-
<Header/>
28+
<div className="app-content">
29+
<Header />
3230
<Switch>
33-
<Route
34-
path="/"
35-
exact={true}
36-
component={Home}
37-
/>
31+
<Route path="/" exact={true} component={Home} />
3832
</Switch>
3933
</div>
4034
</BrowserRouter>
41-
</Provider>
42-
,
35+
</Provider>,
4336
document.getElementById('root')
4437
)

src/store/index.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
import { applyMiddleware, compose, createStore, Store } from 'redux'
22
import thunk from 'redux-thunk'
3-
import reducers from './reducers'
3+
4+
import reducers from './reducers'
45

56
export function configureStore(initialState?) {
67
const middlewares = compose(applyMiddleware(thunk))
78

8-
9-
const store = createStore(
10-
reducers,
11-
middlewares
12-
)
9+
const store = createStore(reducers, middlewares)
1310

1411
if (module.hot) {
1512
module.hot.accept('./reducers', () => {
@@ -19,4 +16,4 @@ export function configureStore(initialState?) {
1916
}
2017

2118
return store
22-
}
19+
}

src/store/reducers/index.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import { combineReducers } from 'redux'
22
// import search from './search'
33
// import player from './player'
44

5-
65
export default combineReducers({
7-
// search,
8-
// player
9-
})
6+
// search,
7+
// player
8+
})

src/utils/AsyncComponentLoader.tsx

+25-16
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,52 @@
11
import * as React from 'react'
2-
import Loading from '../components/shared/Loading'
2+
import Loading from '~/components/common/Loading'
33

44
declare interface IAsyncComponentProps {
5-
moduleProvider: ()=>Promise<any>
6-
props?:object
5+
moduleProvider: () => Promise<object>
6+
componentProps?: object
77
}
88

99
declare interface IAsyncComponentState {
10-
LoadedAsyncComponent?: (React.ComponentClass | null)
10+
loadedComponent?: React.ComponentClass | null
1111
}
12-
13-
14-
export class AsyncComponent extends React.Component<IAsyncComponentProps, IAsyncComponentState> {
12+
export class AsyncComponent extends React.Component<IAsyncComponentProps,IAsyncComponentState> {
1513
private isLoaded: boolean = false
1614
private isMount: boolean = true
1715

16+
public static defaultProps = {
17+
componentProps: {}
18+
}
19+
1820
constructor(props: any) {
1921
super(props)
2022
this.state = {
21-
LoadedAsyncComponent: null
23+
loadedComponent: null
2224
}
2325
}
2426

2527
public componentWillMount() {
2628
if (!this.isLoaded) {
2729
this.isLoaded = true
28-
this.props.moduleProvider().then((provideData: any) => {
29-
if(this.isMount){
30-
this.setState({LoadedAsyncComponent: provideData[Object.keys(provideData)[0]]})
31-
}
30+
this.props.moduleProvider().then((provideData: object) => {
31+
if (this.isMount) {
32+
this.setState({
33+
loadedComponent: provideData[Object.keys(provideData)[0]]
34+
})
35+
}
3236
})
3337
}
34-
}
35-
public componentWillUnmount(){
38+
}
39+
public componentWillUnmount() {
3640
this.isMount = false
3741
}
3842

3943
public render() {
40-
const {LoadedAsyncComponent} = this.state
41-
return LoadedAsyncComponent ? <LoadedAsyncComponent {...this.props.props || {}}/> : <Loading>Page loading</Loading>
44+
const { loadedComponent: LoadedComponent } = this.state
45+
const { componentProps } = this.props
46+
return LoadedComponent ? (
47+
<LoadedComponent {...componentProps} />
48+
) : (
49+
<Loading>Page loading</Loading>
50+
)
4251
}
4352
}

src/utils/PageInformer.tsx

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
export default abstract class PageInformer {
2-
private static pageDescriptionSelector?: HTMLDivElement;
3-
4-
static setPageInfo(title?: string, description: any = '') {
2+
public static setPageInfo(title?: string, description: any = '') {
53
if (title) {
6-
document.querySelector('title').text = title + ' | MOBA';
4+
document.querySelector('title').text = title + ' | MOBA'
75
}
8-
if (!PageInformer.pageDescriptionSelector){
9-
PageInformer.pageDescriptionSelector = document.querySelector('.page-description') as HTMLDivElement;
6+
if (!PageInformer.pageDescriptionSelector) {
7+
PageInformer.pageDescriptionSelector = document.querySelector(
8+
'.page-description'
9+
) as HTMLDivElement
1010
}
11-
document.querySelector('meta[name="description"]').setAttribute('content', description);
12-
PageInformer.pageDescriptionSelector.innerText = description;
11+
document
12+
.querySelector('meta[name="description"]')
13+
.setAttribute('content', description)
14+
PageInformer.pageDescriptionSelector.innerText = description
1315
}
14-
16+
private static pageDescriptionSelector?: HTMLDivElement
1517
}

src/utils/cache.ts

+15-13
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
export const setCache = (key:string, data:object):any => {
2-
localStorage.setItem(key, JSON.stringify(data));
3-
return data;
4-
};
5-
export const getCache = (key:string):any => {
6-
return JSON.parse(localStorage.getItem(key));
7-
};
8-
export const clearCache = (key:string) =>{
9-
localStorage.removeItem(key);
10-
};
11-
export const hasCache = (key:string):boolean=>{
12-
return !!localStorage.getItem(key);
13-
};
1+
export default class Cache {
2+
public static set(key: string, data: object | string | boolean | number) {
3+
localStorage.setItem(key, JSON.stringify(data))
4+
return data
5+
}
6+
public static get(key: string) {
7+
return JSON.parse(localStorage.getItem(key))
8+
}
9+
public static remove(key: string) {
10+
localStorage.removeItem(key)
11+
}
12+
public static has(key: string) {
13+
return localStorage.getItem(key) !== null
14+
}
15+
}

tsconfig.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
"es6",
1818
"es7",
1919
"dom"
20-
]
20+
],
21+
"baseUrl":".",
22+
"paths": {
23+
"~/*" :["./src/*"]
24+
},
2125
},
2226
"exclude": [
2327
"dist",

0 commit comments

Comments
 (0)