text: 'use strict'
  const path = require('path')
  const utils = require('./utils')
  const config = require('../config')
  const vueLoaderConfig = require('./vue-loader.conf')
  const HtmlWebpackPlugin = require('html-webpack-plugin')
  
  function resolve (dir) {
    return path.join(__dirname, '..', dir)
  }
  
  const SkeletonPlugin = require('../../../index.js').SkeletonPlugin
  
  module.exports = {
    context: path.resolve(__dirname, '../'),
    entry: {
      app: './src/main.js'
    },
    output: {
      path: config.build.assetsRoot,
      filename: '[name].js',
      publicPath: process.env.NODE_ENV === 'production'
        ? config.build.assetsPublicPath
        : config.dev.assetsPublicPath
    },
    resolve: {
      extensions: ['.js', '.vue', '.json'],
      alias: {
        'vue$': 'vue/dist/vue.esm.js',
        '@': resolve('src'),
      }
    },
    module: {
      rules: [
        {
          test: /\.vue$/,
          loader: 'vue-loader',
          options: vueLoaderConfig
        },
        {
          test: /\.js$/,
          loader: 'babel-loader',
          include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
        },
        {
          test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
          loader: 'url-loader',
          options: {
            limit: 10000,
            name: utils.assetsPath('img/[name].[hash:7].[ext]')
          }
        },
        {
          test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
          loader: 'url-loader',
          options: {
            limit: 10000,
            name: utils.assetsPath('media/[name].[hash:7].[ext]')
          }
        },
        {
          test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
          loader: 'url-loader',
          options: {
            limit: 10000,
            name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
          }
        }
      ]
    },
    plugins: [
      // new HtmlWebpackPlugin({
      //   filename: 'index.html',
      //   template: 'index.html'
      // }),
      new SkeletonPlugin({
        pathname: path.resolve(__dirname, `../shell`),
        staticDir: path.resolve(__dirname, '../dist'),
        routes: ['/', '/search'],
        port: '7890',
        loading: 'chiaroscuro',
        svg: {
          color: '#EFEFEF',
          shape: 'circle',
          shapeOpposite: ['.Rating-gray_1kpffd5_0 svg']
        },
        image: {
          shape: 'rect', // `rect` | `circle`
          color: '#EFEFEF',
          shapeOpposite: ['.mint-swipe-items-wrap img']
        },
        pseudo: {
          color: '#EFEFEF', // or transparent
          shape: 'circle', // circle | rect
          shapeOpposite: ['.delivery-icon-hollow_3q8_B5r_0', '.index-premium_39rl0v9']
        },
        button: {
          color: '#EFEFEF',
          excludes: ['.mint-swipe-items-wrap a']
        },
        defer: 5000,
        excludes: [],
        remove: [],
        hide: ['.index-dashedline_7B79b3W', '.Rating-actived_GBtiHkB_0'],
        grayBlock: ['#header'],
        cssUnit: 'rem',
        headless: true,
        // minify: false,
        cookies: [{
          name: 'SID',
          value: 'a495vvmEPEE4DZi083dr8yR3EAPYqW40HaWA',
          url: 'https://h5.ele.me'
        }, {
          name: 'USERID',
          value: '273745271',
          url: 'https://h5.ele.me'
        }],
        noInfo: false
      }),
    ],
    node: {
      // prevent webpack from injecting useless setImmediate polyfill because Vue
      // source contains it (although only uses it if it's native).
      setImmediate: false,
      // prevent webpack from injecting mocks to Node native modules
      // that does not make sense for the client
      dgram: 'empty',
      fs: 'empty',
      net: 'empty',
      tls: 'empty',
      child_process: 'empty'
    }
  }
  