diff --git a/package.json b/package.json
index 7879e8e..e0be3ec 100644
--- a/package.json
+++ b/package.json
@@ -8,8 +8,8 @@
"restart": "forever -a -o forever.log -e error.log restart server/index.js",
"stop": "forever stop server/index.js",
"node": "node server/index.js",
- "webpack": "webpack --mode=development",
- "webpack-production": "webpack --mode=production",
+ "webpack": "webpack --mode=development --env=development",
+ "webpack-production": "webpack --mode=production --env=production",
"pull": "git pull && npm run webpack-production && npm restart"
},
"author": "Kayne Ruse",
diff --git a/public/content/task_list.md b/public/content/task_list.md
index 862b904..6ea4e1e 100644
--- a/public/content/task_list.md
+++ b/public/content/task_list.md
@@ -45,3 +45,16 @@ Event Ideas
* Capture the flag.
+Badge Ideas
+---
+
+* alpha tester
+* capture the flag
+* king of the hill
+* gold horde
+* combat master
+* Beta tester
+* Spy Master
+* Referral Linker
+* Bug Hunter (Reward List: Hegemon)
+
diff --git a/public/index.html b/public/index.html
index 4a4c7a9..4d389fd 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,12 +1,21 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Kingdom Battles!
+
+
+
+
+
+
+
+
+
+
diff --git a/server/index.js b/server/index.js
index f6113af..596560a 100644
--- a/server/index.js
+++ b/server/index.js
@@ -76,6 +76,11 @@ app.get('/*app.bundle.js', (req, res) => {
res.sendFile(path.resolve(`${__dirname}/../public/${req.originalUrl.split('/').pop()}`));
});
+//source map (for development)
+app.get('/app.bundle.js.map', (req, res) => {
+ res.sendFile(path.resolve(__dirname + `/../public/${req.originalUrl}`));
+});
+
//fallback
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname + '/../public/index.html'));
diff --git a/src/index.jsx b/src/index.jsx
index 6d23981..acbd42c 100644
--- a/src/index.jsx
+++ b/src/index.jsx
@@ -1,7 +1,7 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
-import { createStore, applyMiddleware, compose } from 'redux';
+import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import DevTools from './dev_tools.jsx';
@@ -17,10 +17,7 @@ account = account ? JSON.parse(account) : {};
var store = createStore(
reducer,
{ account: account }, //initial state
- compose(
- applyMiddleware(thunk),
- DevTools.instrument()
- )
+ applyMiddleware(thunk)
);
//persistence
@@ -31,10 +28,7 @@ store.subscribe(() => {
//start the process
ReactDOM.render(
-
+
,
document.querySelector("#root")
);
diff --git a/src/index_dev.jsx b/src/index_dev.jsx
new file mode 100644
index 0000000..6d23981
--- /dev/null
+++ b/src/index_dev.jsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { Provider } from 'react-redux';
+import { createStore, applyMiddleware, compose } from 'redux';
+import thunk from 'redux-thunk';
+
+import DevTools from './dev_tools.jsx';
+import App from './components/app.jsx';
+
+import reducer from './reducers/reducer.js';
+
+//persistence
+let ITEM_NAME = 'account.kingdombattles';
+let account = localStorage.getItem(ITEM_NAME);
+account = account ? JSON.parse(account) : {};
+
+var store = createStore(
+ reducer,
+ { account: account }, //initial state
+ compose(
+ applyMiddleware(thunk),
+ DevTools.instrument()
+ )
+);
+
+//persistence
+store.subscribe(() => {
+ localStorage.setItem(ITEM_NAME, JSON.stringify(store.getState().account));
+});
+
+//start the process
+ReactDOM.render(
+
+
+ ,
+ document.querySelector("#root")
+);
diff --git a/webpack.config.js b/webpack.config.js
index 6b67c6c..895ab19 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,38 +1,40 @@
const TerserPlugin = require('terser-webpack-plugin');
-module.exports = {
- entry: './src/index.jsx',
- output: {
- path: __dirname + '/public/',
- filename: 'app.bundle.js',
- sourceMapFilename: 'app.js.map'
- },
- devtool: 'source-map',
- module: {
- rules: [
- {
- test: /(\.js$|\.jsx$)/,
- exclude: /(node_modules)/,
- use: {
- loader: 'babel-loader',
- options: {
- presets: ['@babel/preset-env', '@babel/preset-react'],
- plugins: ['react-loadable/babel', '@babel/plugin-syntax-dynamic-import']
- }
- }
- }
- ]
- },
- optimization: {
- minimize: process.env.production,
- minimizer: [
- new TerserPlugin({
- terserOptions: {
- output: {
- comments: false,
- },
- },
- })
- ]
- }
+module.exports = env => {
+ return {
+ entry: `./src/index${env === 'production' ? '' : '_dev'}.jsx`,
+ output: {
+ path: __dirname + '/public/',
+ filename: 'app.bundle.js',
+ sourceMapFilename: 'app.bundle.js.map'
+ },
+ devtool: 'source-map',
+ module: {
+ rules: [
+ {
+ test: /(\.js$|\.jsx$)/,
+ exclude: /(node_modules)/,
+ use: {
+ loader: 'babel-loader',
+ options: {
+ presets: ['@babel/preset-env', '@babel/preset-react'],
+ plugins: ['react-loadable/babel', '@babel/plugin-syntax-dynamic-import']
+ }
+ }
+ }
+ ]
+ },
+ optimization: {
+ minimize: env === 'production',
+ minimizer: [
+ new TerserPlugin({
+ terserOptions: {
+ output: {
+ comments: false,
+ },
+ },
+ })
+ ]
+ }
+ };
};
\ No newline at end of file