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