diff --git a/templates/ReactReduxSpa/.babelrc b/templates/ReactReduxSpa/.babelrc deleted file mode 100644 index 7991bdb..0000000 --- a/templates/ReactReduxSpa/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": [["es2015", { "modules": false }], "react"] -} diff --git a/templates/ReactReduxSpa/ClientApp/boot-client.tsx b/templates/ReactReduxSpa/ClientApp/boot-client.tsx index 58d85a3..cd84cc9 100644 --- a/templates/ReactReduxSpa/ClientApp/boot-client.tsx +++ b/templates/ReactReduxSpa/ClientApp/boot-client.tsx @@ -2,12 +2,14 @@ import './css/site.css'; import 'bootstrap'; import * as React from 'react'; import * as ReactDOM from 'react-dom'; +import { AppContainer } from 'react-hot-loader'; import { Provider } from 'react-redux'; import { ConnectedRouter } from 'react-router-redux'; import { createBrowserHistory } from 'history'; -import routes from './routes'; import configureStore from './configureStore'; import { ApplicationState } from './store'; +import * as RoutesModule from './routes'; +let routes = RoutesModule.routes; // Create browser history to use in the Redux store const history = createBrowserHistory(); @@ -16,11 +18,25 @@ const history = createBrowserHistory(); const initialState = (window as any).initialReduxState as ApplicationState; const store = configureStore(history, initialState); -// This code starts up the React app when it runs in a browser. It sets up the routing configuration -// and injects the app into a DOM element. -ReactDOM.render( - - - , - document.getElementById('react-app') -); +function renderApp() { + // This code starts up the React app when it runs in a browser. It sets up the routing configuration + // and injects the app into a DOM element. + ReactDOM.render( + + + + + , + document.getElementById('react-app') + ); +} + +renderApp(); + +// Allow Hot Module Replacement +if (module.hot) { + module.hot.accept('./routes', () => { + routes = require('./routes').routes; + renderApp(); + }); +} diff --git a/templates/ReactReduxSpa/ClientApp/boot-server.tsx b/templates/ReactReduxSpa/ClientApp/boot-server.tsx index 3d9241a..62be968 100644 --- a/templates/ReactReduxSpa/ClientApp/boot-server.tsx +++ b/templates/ReactReduxSpa/ClientApp/boot-server.tsx @@ -5,7 +5,7 @@ import { StaticRouter } from 'react-router-dom'; import { replace } from 'react-router-redux'; import { createMemoryHistory } from 'history'; import { createServerRenderer, RenderResult } from 'aspnet-prerendering'; -import routes from './routes'; +import { routes } from './routes'; import configureStore from './configureStore'; export default createServerRenderer(params => { diff --git a/templates/ReactReduxSpa/ClientApp/routes.tsx b/templates/ReactReduxSpa/ClientApp/routes.tsx index 8e3465a..d804220 100644 --- a/templates/ReactReduxSpa/ClientApp/routes.tsx +++ b/templates/ReactReduxSpa/ClientApp/routes.tsx @@ -5,13 +5,8 @@ import Home from './components/Home'; import FetchData from './components/FetchData'; import Counter from './components/Counter'; -export default +export const routes = ; - -// Enable Hot Module Replacement (HMR) -if (module.hot) { - module.hot.accept(); -} diff --git a/templates/ReactReduxSpa/package.json b/templates/ReactReduxSpa/package.json index 5d956ed..c5485be 100644 --- a/templates/ReactReduxSpa/package.json +++ b/templates/ReactReduxSpa/package.json @@ -13,12 +13,8 @@ "@types/webpack-env": "^1.13.0", "aspnet-prerendering": "^2.0.0", "aspnet-webpack": "^1.0.27", - "aspnet-webpack-react": "^1.0.4", + "aspnet-webpack-react": "^2.0.0", "awesome-typescript-loader": "^3.0.0", - "babel-core": "^6.5.2", - "babel-loader": "^6.2.3", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", "bootstrap": "^3.3.6", "css-loader": "^0.23.1", "domain-task": "^3.0.0", @@ -31,6 +27,7 @@ "node-noop": "^1.0.0", "react": "~15.4.0", "react-dom": "~15.4.0", + "react-hot-loader": "3.0.0-beta.7", "react-redux": "^4.4.5", "react-router-dom": "^4.1.0", "react-router-redux": "5.0.0-alpha.6", diff --git a/templates/ReactReduxSpa/tsconfig.json b/templates/ReactReduxSpa/tsconfig.json index 5d357ae..0a2eb67 100644 --- a/templates/ReactReduxSpa/tsconfig.json +++ b/templates/ReactReduxSpa/tsconfig.json @@ -2,8 +2,8 @@ "compilerOptions": { "baseUrl": ".", "moduleResolution": "node", - "target": "es6", - "jsx": "preserve", + "target": "es5", + "jsx": "react", "experimentalDecorators": true, "sourceMap": true, "skipDefaultLibCheck": true, diff --git a/templates/ReactReduxSpa/webpack.config.js b/templates/ReactReduxSpa/webpack.config.js index 98ebbc2..5a613b8 100644 --- a/templates/ReactReduxSpa/webpack.config.js +++ b/templates/ReactReduxSpa/webpack.config.js @@ -17,7 +17,6 @@ module.exports = (env) => { }, module: { rules: [ - { test: /\.tsx?$/, include: /ClientApp/, use: { loader: 'babel-loader', options: { cacheDirectory: true } } }, { test: /\.tsx?$/, include: /ClientApp/, use: 'awesome-typescript-loader?silent=true' } ] },