old_contents: const webpack = require('webpack')
  const merge = require('webpack-merge')
  const base = require('./webpack.base.config')
  const vueConfig = require('./vue-loader.config')
  const SWPrecachePlugin = require('sw-precache-webpack-plugin')
  const VueSSRClientPlugin = require('vue-server-renderer/client-plugin')
  
  const config = merge(base, {
    entry: './src/entry-client.js',
    resolve: {
      alias: {
        'create-api': './create-api-client.js'
      }
    },
    plugins: [
      // strip dev-only code in Vue source
      new webpack.DefinePlugin({
        'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
        'process.env.VUE_ENV': '"client"'
      }),
      // extract vendor chunks for better caching
      new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        minChunks: function (module) {
         // this assumes your vendor imports exist in the node_modules directory
         return module.context && module.context.indexOf('node_modules') !== -1;
        }
      }),
      // extract webpack runtime & manifest to avoid vendor chunk hash changing
      // on every build.
      new webpack.optimize.CommonsChunkPlugin({
        name: 'manifest'
      }),
      new VueSSRClientPlugin()
    ]
  })
  
  if (process.env.NODE_ENV === 'production') {
    config.plugins.push(
      // minify JS
      new webpack.optimize.UglifyJsPlugin({
        compress: {
          warnings: false
        }
      }),
      // auto generate service worker
      new SWPrecachePlugin({
        cacheId: 'vue-hn',
        filename: 'service-worker.js',
        dontCacheBustUrlsMatching: /./,
        staticFileGlobsIgnorePatterns: [/index\.html$/, /\.map$/]
      })
    )
  }
  
  module.exports = config
  
new_contents: const webpack = require('webpack')
  const merge = require('webpack-merge')
  const base = require('./webpack.base.config')
  const vueConfig = require('./vue-loader.config')
  const SWPrecachePlugin = require('sw-precache-webpack-plugin')
  const VueSSRClientPlugin = require('vue-server-renderer/client-plugin')
  
  const config = merge(base, {
    entry: {
      app: './src/entry-client.js'
    },
    resolve: {
      alias: {
        'create-api': './create-api-client.js'
      }
    },
    plugins: [
      // strip dev-only code in Vue source
      new webpack.DefinePlugin({
        'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
        'process.env.VUE_ENV': '"client"'
      }),
      // extract vendor chunks for better caching
      new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        minChunks: function (module) {
         // this assumes your vendor imports exist in the node_modules directory
         return module.context && module.context.indexOf('node_modules') !== -1;
        }
      }),
      // extract webpack runtime & manifest to avoid vendor chunk hash changing
      // on every build.
      new webpack.optimize.CommonsChunkPlugin({
        name: 'manifest'
      }),
      new VueSSRClientPlugin()
    ]
  })
  
  if (process.env.NODE_ENV === 'production') {
    config.plugins.push(
      // minify JS
      new webpack.optimize.UglifyJsPlugin({
        compress: {
          warnings: false
        }
      }),
      // auto generate service worker
      new SWPrecachePlugin({
        cacheId: 'vue-hn',
        filename: 'service-worker.js',
        dontCacheBustUrlsMatching: /./,
        staticFileGlobsIgnorePatterns: [/index\.html$/, /\.map$/]
      })
    )
  }
  
  module.exports = config
  
subject: fix hot reload