UNPKG

@25sprout/react-starter

Version:

25sprout web starter with React

33 lines (24 loc) 1.21 kB
/* eslint-disable import/no-import-module-exports */ /* eslint-disable @typescript-eslint/no-var-requires */ /// <reference path="../../types/redux-thunk-fsa/index.d.ts" /> import { createStore, applyMiddleware, compose, Store } from 'redux'; import promiseMiddleware from 'redux-promise-middleware'; import thunkMiddleware from 'redux-thunk-fsa'; import reducers, { State } from 'models/reducers'; const middlewares = [thunkMiddleware, promiseMiddleware]; let composeEnhancers = compose; if (process.env.NODE_ENV !== 'production') { const { createLogger } = require('redux-logger'); // eslint-disable-line global-require middlewares.push(createLogger()); composeEnhancers = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; // eslint-disable-line @typescript-eslint/no-explicit-any } export default function configureStore(preState: State): Store { const store = createStore(reducers, preState, composeEnhancers(applyMiddleware(...middlewares))); if (module.hot) { module.hot.accept('../models/reducers', () => { const nextReducers = require('../models/reducers').default; // eslint-disable-line global-require store.replaceReducer(nextReducers); }); } return store; }