diff --git a/.babelrc b/.babelrc
index b709812..166cc48 100644
--- a/.babelrc
+++ b/.babelrc
@@ -1,4 +1,12 @@
 {
-  "presets": ["env", "stage-0", "react"],
-  "plugins": ["transform-runtime"]
-}
+  "presets": [
+    "es2015",
+    "react",
+    "stage-0"
+  ],
+  "plugins": [
+    "transform-runtime",
+    ["import", {"libraryName": "antd", "libraryDirectory": "es", "style": "css" }],
+    "react-hot-loader/babel"
+  ]
+}
\ No newline at end of file
diff --git a/client/actions/getIp.js b/client/actions/getIp.js
index d4c7ef3..3600116 100644
--- a/client/actions/getIp.js
+++ b/client/actions/getIp.js
@@ -4,7 +4,11 @@ let domain = 'http://192.168.10.100:7788';
 
 let domainIp = '192.168.10.';
 
-let ipIndex = 0;
+let initIndex = 1;
+let key = 3;
+let totalIndex = 255 / 5;
+let onceIndex = totalIndex / key;
+let failTotal = 1;
 
 
 const saveIp = (data)=>{
@@ -27,32 +31,37 @@ const checkStatus = (response)=>{
 
 const parseJson = (response)=>{
     return response.json();
-}
+};
+
+const testIp = ()=>{
+
+};
+
 
 const getIp = ()=>{
     return (dispatch =>{
-        console.log("ipIndex",ipIndex)
-        if(ipIndex > 255){
-
-        }else{
-            let url = 'http://' + domainIp + ipIndex + ':7788/testIp';
-            console.log("url : ",url);
+        for(let i = initIndex; i < (totalIndex + initIndex) ; i++){
+            let url = 'http://' + domainIp + i + ':7788/testIp';
             fetch( url ,{
                 // credentials : 'include',
-                method : 'HEAD',
+                method : 'POST',
                 mode : 'cors',
                 body : {}
             }).then(checkStatus)
                 .then(parseJson)
                 .then((data) => {
                     console.log("data :",data);
-                    dispatch(saveIp(domainIp + ipIndex + ':7788'))
+                    dispatch(saveIp(domainIp + i + ':7788'))
                 })
                 .catch((err) =>{
-                    console.log("Err:",err);
+                    console.error("Err:",err);
+                    failTotal++;
+                    if(failTotal >= totalIndex + initIndex){
+                        initIndex = totalIndex + initIndex > 255 ? 1 : totalIndex + initIndex;
+                        dispatch(getIp())
+                    }
                 });
         }
-
     })
 };
 export {getIp}
diff --git a/client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx b/client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx
new file mode 100644
index 0000000..d40bb99
--- /dev/null
+++ b/client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx
@@ -0,0 +1,32 @@
+import React from 'react';
+require('./index.css')
+export default class HeaderComponent extends React.Component{
+    constructor(props){
+        super(props);
+    }
+
+    render(){
+        return <div className={"headerComponent clearfix"}>
+            <div className={"headerContent leftContent fl"}>
+                <div className={"headerlogo"}>
+                    <img className={"logoImg"} src={UTILPATH.localImg.headlogo} alt=""/>
+                </div>
+                <div>
+                    <img className={"addIcon"} src={UTILPATH.localImg.addIcon} alt=""/>
+                    <div className={"colfff"}>
+                        <p className={"font30"}>华贸商业街</p>
+                        <p className={"font24"}>ID : 001</p>
+                    </div>
+                </div>
+            </div>
+
+            <div className={"headerContent rightContent fr"}>
+                <img className={"userheadImg"} src={UTILPATH.localImg.headlogo} alt=""/>
+                <div className={"userinfo font24 colfff"}>
+                    <p>李大仁</p>
+                    <p>ID:001</p>
+                </div>
+            </div>
+        </div>
+    }
+}
\ No newline at end of file
diff --git a/client/components/CommonComponent/HeaderComponent/index.css b/client/components/CommonComponent/HeaderComponent/index.css
new file mode 100644
index 0000000..c3d6a66
--- /dev/null
+++ b/client/components/CommonComponent/HeaderComponent/index.css
@@ -0,0 +1,36 @@
+.headerComponent{
+    height: 98px;
+    width: 100%;
+    position: relative;
+    background-color: #34343e;
+
+}
+.headerComponent .headerContent{
+    height: 100%;
+    width: auto;
+}
+.headerComponent .headerlogo{
+    width: 440px;
+    height: 100%;
+    background-color: #fff;
+    position: relative;
+}
+.headerComponent .headerlogo:after{
+    content : '';
+    position: absolute;
+    width: 40px;
+    height: 100%;
+    /*background-color: #34343e;*/
+    border-top: 98px solid transparent;
+    border-bottom: 0 solid transparent;
+    border-left: 0 solid transparent;
+    border-right: 40px solid #34343e;
+    top: 0;
+    right: 0;
+}
+.headerComponent .headerlogo .logoImg{
+    position: absolute;
+    top: 50%;
+    left: 40%;
+    transform: translate(-50%,-50%);
+}
\ No newline at end of file
diff --git a/client/containers/PageContainer/PageContainer.jsx b/client/containers/PageContainer/PageContainer.jsx
index 924a157..4e63715 100755
--- a/client/containers/PageContainer/PageContainer.jsx
+++ b/client/containers/PageContainer/PageContainer.jsx
@@ -1,16 +1,15 @@
 'use strict';
 import React from 'react'
 import { connect }  from 'react-redux';
-import {getIp} from '../../actions/getIp'
+import HeaderComponent from '../../components/CommonComponent/HeaderComponent/HeaderComponent'
+
 
 class PageContainer extends React.Component {
     constructor(props) {
         super(props);
-        UTILPATH.socket.init()
+        // UTILPATH.socket.getIp();
     }
     componentWillMount() {
-        let {dispatch} = this.props;
-        dispatch(getIp());
     }
     componentDidMount(){
     }
@@ -20,10 +19,12 @@ class PageContainer extends React.Component {
     }
     componentWillUnmount() {
     }
+
     render() {
+        console.log(this.state);
         return (
             <div>
-               123
+                <HeaderComponent />
             </div>
         )
     }
diff --git a/client/image/addIcon.png b/client/image/addIcon.png
new file mode 100644
index 0000000..0e2fedc
Binary files /dev/null and b/client/image/addIcon.png differ
diff --git a/client/index.html b/client/index.html
index d592476..27be2ae 100755
--- a/client/index.html
+++ b/client/index.html
@@ -1,19 +1,15 @@
 <!doctype html>
 <html>
-  <head>
-    <meta charset="utf-8">
-    <title>怪兽家便利店</title>
-    <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=false,target-densitydpi=device-dpi'/>
-    <meta name="format-detection" content="telephone=yes"/>
-    <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
-    <!--<script src="http://api.map.baidu.com/api?v=2.0&ak=AkqyM7rYFQQxjdrufnYDV4f0Chn8YjNZ"></script>-->
-    <!--<script src="https://api.map.baidu.com/api?v=2.0&ak=AkqyM7rYFQQxjdrufnYDV4f0Chn8YjNZ&t=1"></script>-->
-    <link rel="stylesheet" type="text/css" href="http://cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.css"/>
-  </head>
-  <body>
-    <div id="root"></div>
-    <!-- This script adds the Roboto font to our project. For more detail go to this site:  http://www.google.com/fonts#UsePlace:use/Collection:Roboto:400,300,500 -->
-    <script src="/vendor.bundle.js"></script>
-    <script src="/bundle.js"></script>
-  </body>
-</html>
+<head>
+  <meta charset="UTF-8">
+  <title>怪兽家便利店</title>
+  <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=false,target-densitydpi=device-dpi'/>
+  <meta name="format-detection" content="telephone=no"/>
+
+</head>
+<body>
+<div id="root"></div>
+<script src="/vendor.bundle.js"></script>
+<script src="/index.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/client/index.js b/client/index.js
index 108a195..d02c569 100755
--- a/client/index.js
+++ b/client/index.js
@@ -1,35 +1,32 @@
-import ReactDOM from 'react-dom'
-import React from 'react'
-import { createStore, applyMiddleware } from 'redux';
-import { Provider } from 'react-redux';
-import thunkMiddleware from 'redux-thunk';
-import createLogger from 'redux-logger';
+import React from 'react';
+import ReactDom from 'react-dom';
+import {createStore , applyMiddleware} from 'redux';
+import {Provider} from 'react-redux';
 import reducers from './reducers/index';
-import PageContainer from './containers/PageContainer/PageContainer'
+import { createLogger } from 'redux-logger'
+import thunkMiddleware from 'redux-thunk';
 require('./index.css');
-
-// init thunk
+import PageContainer from './containers/PageContainer/PageContainer'
 
 function activateVendor() {
-    const loggerMiddleware = createLogger();
+    const logMiddleware = createLogger();
     return createStore(
         reducers,
-        applyMiddleware (
+        applyMiddleware(
             thunkMiddleware,
-            loggerMiddleware
+            logMiddleware
         )
-    );
+    )
 }
 
 function renderPage(store) {
-    ReactDOM.render(
+    ReactDom.render(
         <Provider store={store}>
             <PageContainer />
-        </Provider>
-        ,
+        </Provider>,
         document.getElementById('root')
-    );
+    )
 }
 
 let store = activateVendor();
-renderPage(store);
+renderPage(store);
\ No newline at end of file
diff --git a/client/routes/index.js b/client/routes/index.js
deleted file mode 100644
index 65ba7ff..0000000
--- a/client/routes/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = {
-    path: '/',
-    indexRoute: {
-        getComponent(nextState, cb) {
-            require.ensure([], (require) => {
-                cb(null, require('../containers/PageContainer/PageContainer').default)
-            }, 'HomePage')
-        },
-    },
-    getComponent(nextState, cb) {
-        require.ensure([], (require) => {
-            cb(null, require('../containers/App/App').default)
-        }, 'App')
-    },
-    childRoutes: [
-        require('./trouble'),
-    ]
-};
\ No newline at end of file
diff --git a/client/routes/trouble.js b/client/routes/trouble.js
deleted file mode 100644
index 4d61b94..0000000
--- a/client/routes/trouble.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-module.exports = {
-    path : '/trouble/:tid',
-    getComponent(nextState,cb){
-        require.ensure([],(require)=>{
-            cb(null,require('../containers/Trouble/Trouble').default)
-        },'Trouble')
-    }
-}
\ No newline at end of file
diff --git a/client/util/image.js b/client/util/image.js
index 9982105..7a87e35 100644
--- a/client/util/image.js
+++ b/client/util/image.js
@@ -1,5 +1,6 @@
 import headlogo from '../image/header-logo.png';
 import defaultImg from '../image/default.png';
+import addIcon from '../image/addIcon.png';
 
 const localHost = 'http://localhost:7788';
 const devHost = 'http://test.mjitech.com';
@@ -73,6 +74,6 @@ const handleImgLoad = (ref)=>{
     return style;
 }
 
-const localImg = {headlogo,defaultImg}
+const localImg = {headlogo,defaultImg,addIcon}
 
 module.exports = {localHost,devHost,masterHost,getPic,handleImgError,handleImgLoad,localImg};
\ No newline at end of file
diff --git a/client/util/socket.js b/client/util/socket.js
index a932d0d..2c605d6 100644
--- a/client/util/socket.js
+++ b/client/util/socket.js
@@ -1,54 +1,191 @@
-
+import fetch from 'isomorphic-fetch'
 
 let domainIp = '192.168.10.';
 
-let ipIndex = 0;
+let initIndex = 1;
+let totalIndex = 255 / 5;
+let failTotal = 1;
+let currentIpIndex = 0;
+let ws = null;
+let inteval = null;
+let timer = null;
+let time = 60000;
+let intevalTime = 30000;
+let isFalse = false;
 
+const checkStatus = (response)=>{
+    console.log("===========")
+    console.log(response);
+    if (response.status >= 200 && response.status < 300) {
+        return response;
+    }
+    const error = new Error(response.statusText);
+    error.response = response;
+    throw error;
+};
 
+const parseJson = (response)=>{
+    return response.json();
+};
 
-const init = ()=>{
-    if("WebSocket" in window){
-        console.log("ipIndex : " , ipIndex)
-        let url = 'ws://' + domainIp + ipIndex + ':7788/notify';
-        try{
-            let ws = new WebSocket(url);
-
-            ws.onopen = function()
-            {
-                // Web Socket 已连接上,使用 send() 方法发送数据
-                // ws.send("发送数据");
-                console.log("open");
-            };
-
-            ws.onmessage = function (evt)
-            {
-                var received_msg = evt.data;
-                console.log("数据已接收...");
-            };
-
-            ws.onclose = function(err)
-            {
-                // 关闭 websocket
-                console.log("连接已关闭...");
-                console.log("err : ",err)
-            };
-            ws.onerror = function (err) {
-                console.log("wrong...");
-                console.log("err : ",err)
-                ipIndex++;
-                ipIndex = ipIndex > 255 ? 0 : ipIndex;
-                init();
+const getIp = ()=>{
+    console.log("getIp : ",initIndex)
+    for(let i = initIndex; i < (totalIndex + initIndex) ; i++){
+        let url = 'http://' + domainIp + i + ':9999/getmyid';
+        fetch( url ,{
+            // credentials : 'include',
+            method : 'GET',
+            mode : 'cors',
+            body : {}
+        }).then(checkStatus)
+            .then(parseJson)
+            .then((data) => {
+                console.log("data :",data);
+                if(data.storeId){
+                    let wsUrl = 'ws://' + domainIp + i + ':7788/notify?from=plant&storeId='+data.storeId;
+                    currentIpIndex = i;
+                    init(wsUrl);
+                }
+
+            })
+            .catch((err) =>{
+                console.error("Err:",err);
+                failTotal++;
+                if(failTotal >= totalIndex + initIndex){
+                    initIndex = totalIndex + initIndex;
+                    if(initIndex > 255){
+                        inteval = setTimeout(function () {
+                            console.log("------");
+                            window.clearTimeout(inteval);
+                            inteval = null;
+                            initIndex = 1;
+                            failTotal = 1;
+                            getIp();
+                        },intevalTime)
+                    }else{
+                        getIp();
+                    }
+
+
+                }
+            });
+    }
+};
+
+const testIp = (ip) => {
+    console.log("testIp : ",ip);
+
+    let url = 'http://' + domainIp + ip + ':9999/getmyid';
+    fetch( url ,{
+        // credentials : 'include',
+        method : 'GET',
+        mode : 'cors',
+        body : {}
+    }).then(checkStatus)
+        .then(parseJson)
+        .then((data) => {
+            if(data.storeId){
+                let wsUrl = 'ws://' + domainIp + i + ':7788/notify?from=plant&storeId='+data.storeId;
+                currentIpIndex = i;
+                init(wsUrl);
             }
-        }catch (e) {
-            console.log("ERR : ", e);
+        })
+        .catch((err) =>{
+            console.error("Err:",err);
+            currentIpIndex = 0;
+            window.clearTimeout(inteval);
+            inteval = null;
+            initIndex = 1;
+            failTotal = 1;
+            getIp()
+        });
+}
+
+
+const init = (url)=>{
+    console.log("init :" ,url);
+    if("WebSocket" in window && !ws && url){
+        ws = new WebSocket(url);
+
+        ws.onopen = function()
+        {
+            // Web Socket 已连接上,使用 send() 方法发送数据
+            // ws.send("发送数据");
+            clearInterval(timer);
+            timer = null;
+            window.clearTimeout(inteval);
+            inteval = null;
+            initIndex = 1;
+            failTotal = 1;
+
+
+            console.log("open");
+            isFalse = false;
+        };
+
+        ws.onmessage = function (evt)
+        {
+            var received_msg = evt.data;
+            console.log("数据已接收...");
+        };
+
+        ws.onclose = function(err)
+        {
+            // 关闭 websocket
+            console.log("close : ",err);
+            getError();
+        };
+        ws.onerror = function (err) {
+            console.error("error : ",err);
+            getError();
         }
 
 
     }
 };
 
-const error = ()=>{
+const getError = ()=>{
+    ws = null;
+    isFalse = true;
+    console.log("getError")
+    if(currentIpIndex){
+        testIp(currentIpIndex);
+    }else{
+        window.clearTimeout(inteval);
+        inteval = null;
+        initIndex = 1;
+        failTotal = 1;
+        getIp();
+    }
+    // if(!ws && !timer){
+    //     console.log("in timer")
+    //     timer = setInterval(function () {
+    //         getError();
+    //     },time)
+    // }
+
+}
 
-};
+const sendMsg = (msg) => {
+    if(ws){
+        try{
+            ws.send(msg);
+        }catch (e) {
+            console.error("sendMsg error :",e)
+        }
+
+    }
+}
+
+const closeSocket = ()=>{
+    if(ws){
+        try{
+            ws.close();
+            ws = null;
+        }catch (e) {
+            console.error("closeSocket error :",e)
+        }
+    }
+}
 
-module.exports = {init}
\ No newline at end of file
+module.exports = {getIp,sendMsg}
\ No newline at end of file
diff --git a/package.json b/package.json
index f6d0eb6..d4d4ca0 100644
--- a/package.json
+++ b/package.json
@@ -1,51 +1,48 @@
 {
-  "name": "maxSpotOrderDetail",
+  "name": "machinehomepage_new_27",
   "version": "1.0.0",
   "private": true,
-  "description": "MaxSpot OrderDetail Page",
+  "description": "Maxbox machinePage 27",
   "main": "index.js",
   "scripts": {
-    "clean": "rm -rf static/*",
     "test": "echo \"Error: no test specified\" && exit 1",
-    "start": "cross-env NODE_ENV=development webpack-dev-server --env=dev -d --history-api-fallback --hot --inline --progress --colors --port 80 --host 0.0.0.0",
-    "start:prepub": "NODE_ENV=production webpack-dev-server --env=dev -d --history-api-fallback --hot --inline --progress --colors --port 80 --host 0.0.0.0",
-    "build:prepub": "NODE_ENV=test webpack --env=build --progress --colors",
-    "build:preprod": "NODE_ENV=preprod webpack --env=build --progress --colors",
-    "build": "NODE_ENV=production webpack --env=build --progress --colors"
+    "clean": "rm -rf static/*",
+    "start": "set NODE_ENV=development && webpack-dev-server --env=dev -d --history-api-fallback --hot --inline --progress --colors --port 80 --host 0.0.0.0",
+    "build": "set NODE_ENV=production && webpack --env=build --progress --color"
   },
+  "author": "",
   "license": "MIT",
   "devDependencies": {
-    "babel-core": "^6.5.2",
-    "babel-loader": "^6.2.3",
-    "babel-plugin-transform-runtime": "^6.5.2",
-    "babel-preset-env": "^1.6.1",
-    "babel-preset-react": "^6.5.0",
-    "babel-preset-stage-0": "^6.5.0",
-    "babel-runtime": "^6.5.0",
-    "classnames": "^2.2.3",
-    "cross-env": "^5.1.1",
-    "css-loader": "^0.23.1",
-    "file-loader": "^0.8.5",
-    "isomorphic-fetch": "^2.2.1",
+    "antd": "^3.6.3",
+    "babel-core": "^6.26.3",
+    "babel-loader": "^7.1.4",
+    "babel-plugin-import": "^1.8.0",
+    "babel-plugin-transform-runtime": "^6.23.0",
+    "babel-preset-env": "^1.7.0",
+    "babel-preset-es2015": "^6.24.1",
+    "babel-preset-react": "^6.24.1",
+    "babel-preset-stage-0": "^6.24.1",
+    "babel-runtime": "^6.26.0",
+    "css-loader": "^0.28.11",
+    "file-loader": "^1.1.11",
     "minimist": "^1.2.0",
-    "postcss-loader": "^0.8.1",
-    "qrcode.react": "^0.6.1",
-    "react": "15.3.0",
-    "react-dom": "15.3.0",
-    "react-hot-loader": "^1.3.0",
-    "react-lazy-load": "^3.0.10",
-    "react-redux": "^4.4.0",
-    "react-router": "^2.0.0",
-    "react-router-redux": "^4.0.0",
-    "redux": "^3.3.1",
-    "redux-logger": "^2.6.1",
-    "redux-thunk": "^2.1.0",
-    "rucksack-css": "^0.8.5",
-    "style-loader": "^0.13.0",
-    "swiper": "^3.3.1",
-    "url-loader": "^0.5.7",
-    "webpack": "^1.12.14",
-    "webpack-dev-server": "^1.14.1",
-    "webpack-hot-middleware": "^2.7.1"
+    "postcss-loader": "^2.1.5",
+    "prop-types": "^15.6.2",
+    "react-hot-loader": "^4.0.0",
+    "redux-logger": "^3.0.6",
+    "redux-thunk": "^2.3.0",
+    "rucksack-css": "^1.0.2",
+    "sockjs-client": "^1.1.5",
+    "style-loader": "^0.21.0",
+    "swiper": "^3.4.2",
+    "url-loader": "^1.0.1",
+    "webpack": "^3.12.0",
+    "webpack-dev-server": "^2.11.2"
+  },
+  "dependencies": {
+    "react": "^16.4.1",
+    "react-dom": "^16.4.1",
+    "react-redux": "^5.0.7",
+    "redux": "^4.0.0"
   }
 }
diff --git a/webpack.config.js b/webpack.config.js
index bde3b5c..dfde05e 100755
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,154 +1,131 @@
-var rucksack = require('rucksack-css')
-var webpack = require('webpack')
-var path = require('path')
-
-/* baseConfig */
-var baseConfig = {
-  context: path.join(__dirname, './client'),
-  entry: {
-    jsx: './index.js',
-    html: './index.html',
-    vendor: [
-      'react',
-      'react-dom',
-      'react-redux',
-      'react-router',
-      'redux'
-    ]
-  },
-
-  module: {
-    loaders: [
-      {
-        test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
-        loader: "url-loader?minetype=application/font-woff"
-      },
-      {
-        test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
-        loader: "file-loader"
-      },
-      {
-        test: /\.(jpg|png|jpeg)$/,
-        loader: "url-loader?mimetype=image/png"
-        // loader: "url-loader?limit=10000&name=img/[name].[hash:6].[ext]"
-      },
-      {
-        test: /\.(gif)$/,
-        loader: "url-loader?mimetype=image/gif"
-      },
-      {
-        test: /\.html$/,
-        loader: 'file?name=[name].[ext]'
-      },
-      {
-        test: /\.css$/,
-        loader: 'style-loader!css-loader'
-      },
-      {
-        test: /\.(js|jsx)$/,
-        exclude: /node_modules/,
-        loaders: [
-          'react-hot',
-          'babel-loader'
-        ],
-      },
-    ],
-  },
-  resolve: {
-    extensions: ['', '.js', '.jsx']
-  },
-  postcss: [
-    rucksack({
-      autoprefixer: true
-    })
-  ],
-  devServer: {
-    contentBase: './client',
-    disableHostCheck: true,
-    hot: true
-  }
+const path = require('path');
+const webpack = require('webpack')
+const rucksack = require('rucksack-css');
+let baseConfig = {
+    context : path.join(__dirname,'./client'), //基础目录
+    entry : { //入口文件
+        index:['./index.js','./index.html'],
+        vendor:[
+            'react',
+            'react-dom',
+            'react-redux',
+            'redux'
+        ]
+    },
+    module : {
+        rules:[
+            {
+                test:/\.(ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
+                use:["url-loader?limit=5120"]
+            },
+            {
+                test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
+                use: ['url-loader?limit=10000&mimetype=image/svg+xml']
+            },
+            {
+                test:/\.(jpg|png|jpeg)$/,
+                use:["url-loader?limit=512000&name=[name]-[hash:6].[ext]&mimetype=image/png"] //limit 500kb
+            },
+            {
+                test:/\.(gif)$/,
+                use:["url-loader?limit=512000&name=[path][name].[ext]&mimetype=image/gif"]
+            },
+            {
+                test: /\.html$/,
+                use: ['file-loader?name=[name].[ext]']
+            },
+            {
+                test: /\.css$/,
+                use: ["style-loader", "css-loader","postcss-loader"]
+            },
+            {
+                test: /\.(js|jsx)$/,
+                exclude: /node_modules/,
+                include: path.join(__dirname, 'client'),
+                use: ['babel-loader?cacheDirectory=true']
+            }
+        ]
+    },
+    resolve:{ //自动解析确定的扩展
+        extensions:['.js', '.jsx', '.scss', '.css'],
+        modules: [
+            path.resolve(__dirname, 'node_modules'),
+            path.join(__dirname, './client')
+        ]
+    }
 }
-/* end baseConfig */
-
-/* get env */
-function getEnv() {
-  const args = require('minimist')(process.argv.slice(2));
-  var env;
-  if (args._.length > 0 && args._.indexOf('start') !== -1) {
-    env = 'test';
-  } else if (args.env) {
-    env = args.env;
-  } else {
-    env = 'dev';
-  }
-  return env
+function getEnv(){
+    const args = require('minimist')(process.argv.slice(2));
+    let env;
+    if(args._.length > 0 && args._.indexOf('start') !== -1){
+        env = 'test';
+    }else if(args.env){
+        env = args.env;
+    }else{
+        env = 'dev'
+    }
+    return env;
 }
+let env = getEnv();
 
-var env = getEnv()
-/* end get env */
+let envConfig = {
+    'build':{
+        output:{
+            path : path.join(__dirname,'./static'),
+            filename : 'bundle-[hash:6].js'
+        },
+        plugins:[
+            new webpack.optimize.UglifyJsPlugin(), //js压缩
+            new webpack.optimize.CommonsChunkPlugin({
+                name : "vendor",
+                filename : "vendor.bundle.js"
+            }), //分割共有模块和代码模块
+            new webpack.optimize.AggressiveMergingPlugin(),
+            new webpack.DefinePlugin({
+                'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development') }
+            }),
+            new webpack.ProvidePlugin({
+                ENV: __dirname + '/client/env/' + (process.env.NODE_ENV || 'development'),
+                UTILPATH:__dirname+'/client/util/util',
+                CONFIG:__dirname+'/client/config/index'
+            }),
+            new webpack.NoEmitOnErrorsPlugin(), //配置了NoErrorsPlugin插件,用来跳过编译时出错的代码并记录,使编译后运行时的包不会发生错误
+        ]
 
-/*define envConfig*/
-var envConfig = {
-  'build' : {
-    output: {
-      path: path.join(__dirname, './static'),
-      filename: 'bundle-[hash:6].js',
-    },
-    plugins: [
-      new webpack.optimize.UglifyJsPlugin(),
-      new webpack.optimize.DedupePlugin(),
-      new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.bundle.js'),
-      new webpack.DefinePlugin({
-        'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development') }
-      }),
-      new webpack.ProvidePlugin({
-          ENV: __dirname + '/client/env/' + (process.env.NODE_ENV || 'development'),
-          UTILPATH:__dirname+'/client/util/util',
-          CONFIG:__dirname+'/client/config/index'
-      }),
-      new webpack.optimize.AggressiveMergingPlugin(),
-      new webpack.NoErrorsPlugin(),
-    ]
-  },
-  'dev': {
-    output: {
-      path: path.join(__dirname, './static'),
-      filename: 'bundle.js',
     },
-    plugins: [
-      new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.bundle.js'),
-      new webpack.DefinePlugin({
-        'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development') }
-      }),
-      new webpack.ProvidePlugin({
-          ENV: __dirname + '/client/env/' + (process.env.NODE_ENV || 'development'),
-          UTILPATH:__dirname+'/client/util/util',
-          CONFIG:__dirname+'/client/config/index'
-      }),
-    ]
-  },
-  'test' : {
-    output: {
-      path: path.join(__dirname, './static'),
-      filename: 'bundle-[hash:6].js',
-    },
-    plugins: [
-      new webpack.optimize.UglifyJsPlugin(),
-      new webpack.optimize.DedupePlugin(),
-      new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.bundle.js'),
-      new webpack.DefinePlugin({
-        'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'test') }
-      }),
-      new webpack.ProvidePlugin({
-        ENV: __dirname + '/client/env/' + (process.env.NODE_ENV || 'test'),
-        DEFALUT_INFO : __dirname + '/client/defaultInfo/development',
-      }),
-      new webpack.optimize.AggressiveMergingPlugin(),
-      new webpack.NoErrorsPlugin(),
-    ]
-  },
+    'dev':{
+        output: {
+            path: path.join(__dirname, './static'),
+            filename: '[name].js',
+        },
+        plugins:[
+            new webpack.optimize.UglifyJsPlugin(), //js压缩
+            new webpack.optimize.CommonsChunkPlugin({
+                name : "vendor",
+                filename : "vendor.bundle.js"
+            }), //分割共有模块和代码模块
+            new webpack.DefinePlugin({
+                'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development') }
+            }),
+            new webpack.ProvidePlugin({
+                ENV: __dirname + '/client/env/' + (process.env.NODE_ENV || 'development'),
+                UTILPATH:__dirname+'/client/util/util',
+                CONFIG:__dirname+'/client/config/index'
+            }),
+            new webpack.LoaderOptionsPlugin({
+                options: {
+                    devServer: {
+                        contentBase: "./client", //本地服务器所加载的页面所在的目录
+                        colors: true, //终端中输出结果为彩色
+                        historyApiFallback: true, //不跳转
+                        inline: true, //实时刷新
+                        disableHostCheck: true,
+                        hot : true
+                    }
+                }
+            }),
+        ]
+    }
 }
 
-/* end define envConfig*/
-
-module.exports = Object.assign({}, baseConfig, envConfig[env])
\ No newline at end of file
+module.exports = Object.assign({},baseConfig,envConfig[env]);
\ No newline at end of file