| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- const webpack = require('webpack')
- const CompressionWebpackPlugin = require('compression-webpack-plugin')
- const productionGzipExtensions = ['js', 'css']
- // const isProduction = process.env.NODE_ENV === 'production'
- // 预渲染
- const PrerenderSPAPlugin = require('prerender-spa-plugin');
- const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
- const path = require('path');
- module.exports = {
- // 基本路径 baseURL已经过时
- publicPath: './',
- // 输出文件目录
- outputDir: 'dist',
- // eslint-loader 是否在保存的时候检查
- lintOnSave: false,
- // use the full build with in-browser compiler?
- // https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only
- // compiler: false,
- // webpack配置
- // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
- chainWebpack: () => {},
- configureWebpack: config => {
- config.entry = ['babel-polyfill', './src/main.js']
- if (process.env.NODE_ENV === 'production') {
- config.plugins.push(
- new PrerenderSPAPlugin({
- // 生成文件的路径,也可以与webpakc打包的一致。
- // 下面这句话非常重要!!!
- // 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
- staticDir: path.join(__dirname, './dist'),
- indexPath: path.join(__dirname, './dist', 'index.html'),
- // 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。
- routes: ['/home', '/fittingRoom', '/save', '/share', '/giftBox', '/giftBoxFive'],
- // renderer: new PrerenderSPAPlugin.PuppeteerRenderer({//这样写renderAfterTime生效了
- // renderAfterTime: 5000
- // }),
- // renderAfterDocumentEvent: 'render-event'
- // 这个很重要,如果没有配置这段,也不会进行预编译
- renderer: new Renderer({
- inject: {
- foo: 'bar'
- },
- headless: false,
- // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。
- renderAfterDocumentEvent: 'render-event'
- })
- })
- )
- };
- plugins: [
- // 配置compression-webpack-plugin压缩
- new CompressionWebpackPlugin({
- algorithm: 'gzip',
- test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
- threshold: 1024,
- minRatio: 0.8
- }),
- new webpack.optimize.LimitChunkCountPlugin({
- maxChunks: 5,
- minChunkSize: 100
- })
- ]
- },
- // vue-loader 配置项
- // https://vue-loader.vuejs.org/en/options.html
- // vueLoader: {},
- // 生产环境是否生成 sourceMap 文件
- productionSourceMap: false,
- // css相关配置
- css: {
- // 是否使用css分离插件 ExtractTextPlugin
- extract: true,
- // 开启 CSS source maps?
- sourceMap: false,
- // css预设器配置项
- loaderOptions: {
- postcss: {
- plugins: [
- require('postcss-px2rem-exclude')({ "remUnit": 75, "exclude": /node_modules/i }), // 换算的基数
- ]
- }
- },
- // 启用 CSS modules for all css / pre-processor files.
- modules: false
- },
- // use thread-loader for babel & TS in production build
- // enabled by default if the machine has more than 1 cores
- parallel: require('os').cpus().length > 1,
- // 是否启用dll
- // See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#dll-mode
- // dll: false,
- // PWA 插件相关配置
- // see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
- pwa: {},
- // webpack-dev-server 相关配置
- devServer: {
- hot:true,//自动保存
- overlay: { // 让浏览器 overlay 同时显示警告和错误
- warnings: true,
- errors: true
- },
- // host: "localhost",
- host: "0.0.0.0",
- port: 8080, // 端口号
- https: false, // https:{type:Boolean}
- open: false, //配置后自动启动浏览器
- hotOnly: true, // 热更新
- // proxy: {
- // '/api': {
- // target: 'http://ttr.yergoo.com',//服务器协议、ip和端口号
- // secure: false, // 如果是https接口,需要配置这个参数
- // ws: false,//是否代理websockets
- // changeOrigin: true,
- // pathRewrite:{
- // '^/api':''
- // }
- // },
- // },
- },
- // 第三方插件配置
- pluginOptions: {
- // ...
- }
- }
-
|