let path = require("path");
let webpackConfig = require("./webpack.config");
const webpack = require('webpack')
const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;

module.exports = {
  publicPath: '/',
  outputDir:'dist',
  //assetsDir:'static',//放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。

  pages: {
    index: {
      entry: "./src/main.js",
      template: `./public/index.html`,
      filename: "index.html"
    }
  },
  lintOnSave: false,
  devServer: {
    open: true,
    host: "0.0.0.0",
    port: 8082,
    contentBase: path.resolve(__dirname, "public"),
    https: false,
    hotOnly: false,
    proxy: {
        '/': {
          target: "http://localhost:8080",
          // target: "https://ymg.hxscredit.gov.cn",
          // target: "http://192.168.0.181:8080",
          // // target: "http://192.168.8.17:7206",
          // target: "http://192.168.8.168:8080",
        ws: false,
        changeOrigin: true
      }
    },
    disableHostCheck: true
    //before: app => {}
  },
  css: {
    // 是否从组件中抽取css成一个单个css文件（仅在生产环境中生效）
    // extract: true,
    // 是否启动css sourceMap
    sourceMap: true,
    // sass-loader, use { sass: { ... } }
    // 配置css-loader
    loaderOptions: {
      sass: {
        // @/ 是 src/ 的别名
        // 所以这里假设你有 `src/variables.scss` 这个文件
        additionalData: `@import "@/styles/index.scss";`
      }
    },
    // 是否为所有css或css预编译文件使用modules模式
    modules: false
  },
  //webpack配置
  chainWebpack: config => {
    let webpackAlias = webpackConfig.resolve.alias;
    Object.keys(webpackAlias).forEach(aliasName => {
      config.resolve.alias.set(aliasName, webpackAlias[aliasName]);
    });
  },
    configureWebpack: config => {
        if (process.env.NODE_ENV !== 'production') return;
        return {
            plugins: [
                new webpack.optimize.MinChunkSizePlugin({
                    minChunkSize: 10000 // 通过合并小于 minChunkSize 大小的 chunk，将 chunk 体积保持在指定大小限制以上
                }),
                new PrerenderSPAPlugin({
                    // 生成文件的路径，也可以与webpakc打包的一致。
                    // 下面这句话非常重要！！！
                    // 这个目录只能有一级，如果目录层次大于一级，在生成的时候不会有任何错误提示，在预渲染的时候只会卡着不动。
                    staticDir: path.join(__dirname, 'dist'),
                    // 对应自己的路由文件，比如a有参数，就需要写成 /a/param1。
                    routes: ['/', '/medicalGuide'],
                    // 这个很重要，如果没有配置这段，也不会进行预编译
                    renderer: new Renderer({
                        inject: {
                            foo: 'bar'
                        },
                        headless: false,
                        // 在 main.js 中 document.dispatchEvent(new Event('render-event'))，两者的事件名称要对应上。
                        renderAfterDocumentEvent: 'render-event'
                    })
                }),
            ],
        };
    },
  parallel: require("os").cpus().length > 1
};
