import { createStore, applyMiddleware, compose } from 'redux'; import { routerMiddleware } from 'react-router-redux'; import { createEpicMiddleware } from 'redux-observable'; import createHistory from 'history/createBrowserHistory'; import rootReducer from './reducers/index.js'; import rootEpic from './epics/index.js'; export const history = createHistory(); const initialState = {}, enhancers = [], epicMiddleware = createEpicMiddleware(), middleware = [routerMiddleware(history), epicMiddleware]; if( process.env.NODE_ENV === 'development' ) { const devToolsExtension = window.devToolsExtension; if( typeof devToolsExtension === 'function' ) { enhancers.push(devToolsExtension()); } } const composedEnhancers = compose( applyMiddleware(...middleware), ...enhancers, ); const store = createStore( rootReducer, initialState, composedEnhancers, ); epicMiddleware.run(rootEpic); export default store;