一篇文章解决你的vue.config.js配置问题

vue.config.js配置问题

本文转载:https://c.lanmit.com/Webqianduan/JavaScript/55401.html

将为您描述vue.config.js配置优化,具体操作过程:

vue.config.js完整代码如下:

 

'use strict';
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.

const path = require('path');
const resolve = (dir) => path.resolve(__dirname, dir);
// 是否为生产环境
const isProduction = process.env.NODE_ENV !== 'development';
// gzip压缩
const CompressionWebpackPlugin = require('compression-webpack-plugin');

const cdn = {
  // 忽略打包的第三方库
  externals: {
    vue: 'Vue',
    vuex: 'Vuex',
    'vue-router': 'VueRouter',
    axios: 'axios',
  },

  // 通过cdn方式使用
  js: [
    'https://cdn.bootcss.com/vue/2.6.11/vue.runtime.min.js',
    'https://cdn.bootcss.com/vue-router/3.1.2/vue-router.min.js',
    'https://cdn.bootcss.com/vuex/3.1.2/vuex.min.js',
    'https://cdn.bootcss.com/axios/0.19.2/axios.min.js',
    'https://cdn.bootcss.com/moment.js/2.24.0/moment.min.js',
    'https://cdn.bootcss.com/echarts/4.6.0/echarts.min.js',
  ],
  css: [],
};

module.exports = {
  publicPath: '/', // 基本路径
  outputDir: 'dist', // 输出文件目录
  assetsDir: 'static',
  indexPath: 'index.html',
  productionSourceMap: false, // 关闭生产环境的 source map
  chainWebpack: (config) => {
    config.module
      .rule('swf')
      .test(/.swf$/)
      .use('url-loader')
      .loader('url-loader')
      .tap((options) => {
        return {
          limit: 10000,
        };
      });
    // 添加别名
    config.resolve.alias
      .set('@', resolve('src'))
      .set('assets', resolve('src/assets'))
      .set('components', resolve('src/components'))
      .set('router', resolve('src/router'))
      .set('store', resolve('src/store'))
      .set('views', resolve('src/views'));
    config.plugin('copy').tap((args) => {
      args[0][0].to = 'resource';
      return args;
    });
    // 移除 prefetch 插件
    config.plugins.delete('prefetch-index');
    // 移除 preload 插件,避免加载多余的资源
    config.plugins.delete('preload-index');
    // 配置cdn引入
    config.plugin('html').tap((args) => {
      args[0].cdn = cdn;
      return args;
    });
  },
  // 这个值是一个对象,则会通过 webpack-merge 合并到最终的配置中。
  configureWebpack: (config) => {
    // 忽略打包配置
    config.externals = cdn.externals;
    // 生产环境相关配置
    if (isProduction) {
      //gzip压缩
      const productionGzipExtensions = ['html', 'js', 'css'];
      config.plugins.push(
        new CompressionWebpackPlugin({
          filename: '[path].gz[query]',
          algorithm: 'gzip',
          test: new RegExp('\.(' + productionGzipExtensions.join('|') + ')$'),
          threshold: 10240, // 只有大小大于该值的资源会被处理 10240
          minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
          deleteOriginalAssets: false, // 删除原文件
        })
      );
      // 公共代码抽离
      config.optimization = {
        // 分割代码块
        splitChunks: {
          cacheGroups: {
            //公用模块抽离
            common: {
              chunks: 'initial',
              minSize: 0, //大于0个字节
              minChunks: 2, //抽离公共代码时,这个代码块最小被引用的次数
            },
            //第三方库抽离
            vendor: {
              priority: 1, //权重
              test: /node_modules/,
              chunks: 'initial',
              minSize: 0, //大于0个字节
              minChunks: 2, //在分割之前,这个代码块最小应该被引用的次数
            },
          },
        },
      };
    }
  },
  devServer: {
    overlay: {
      warnings: false,
      errors: false,
    },
    open: true,
    // host: 'localhost',
    host: '0.0.0.0',
    port: 8081,
    https: false,
    hotOnly: true,
    proxy: {
      '/api': {
        // 代理地址
        target: process.env.VUE_APP_API,
        changeOrigin: true, // 是否跨域
        secure: false,
        pathRewrite: {
          '^/api': '/api/ctrl', //测试环境
          // '/api': '', //需要rewrite重写的, //本地联调
        },
      },
    },
  },
  css: {
    extract: true,
    sourceMap: false,
    loaderOptions: {
      sass: {
        prependData: `@import "~@/assets/scss/variables.scss";`,
      },
    },
  },
};
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您回答这个问题!现在,让我们一步一步地创建一个基于Vue.js框架技术的个人博客。 首先,我们需要创建一个Vue.js项目。可以使用Vue CLI命令行工具来创建一个新项目。在命令行中输入以下命令: ``` vue create my-blog ``` 这将创建一个名为“my-blog”的新Vue项目,并自动安装所需的依赖项。 接下来,我们需要创建一个主页。在“src”文件夹中,创建一个名为“Home.vue”的新文件。这将是我们的主页组件。在组件中,我们可以添加一个简单的页面布局,如下所示: ``` <template> <div> <h1>欢迎来到我的博客!</h1> <p>这是我的第一篇文章。</p> </div> </template> <script> export default { name: 'Home' } </script> <style> h1 { font-size: 3rem; margin-bottom: 1rem; } p { font-size: 1.5rem; } </style> ``` 这将在页面中显示一个标题和一段文本。 现在,我们需要为我们的博客创建路由。在“src”文件夹中,创建一个名为“router.js”的新文件。在文件中,我们可以定义我们的路由: ``` import Vue from 'vue' import VueRouter from 'vue-router' import Home from './Home.vue' Vue.use(VueRouter) const routes = [ { path: '/', component: Home } ] const router = new VueRouter({ mode: 'history', routes }) export default router ``` 这将在我们的应用程序中创建一个路由,指向我们的主页组件。 现在,我们需要在我们的应用程序中加载路由。在“src”文件夹中,打开“main.js”文件,并添加以下代码: ``` import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false new Vue({ router, render: h => h(App), }).$mount('#app') ``` 这将在我们的应用程序中加载我们的路由,并将应用程序渲染到一个名为“app”的HTML元素中。 最后,我们需要创建一个名为“App.vue”的新文件,作为我们的应用程序的根组件。在组件中,我们可以添加一个简单的页面布局,如下所示: ``` <template> <div> <router-view /> </div> </template> <script> export default { name: 'App' } </script> ``` 这将在页面中显示我们的主页组件。 现在,我们已经创建了一个基于Vue.js框架技术的个人博客!您可以使用此模板添加更多组件和路由,以创建更复杂的博客。 希望这可以帮助您开始创建自己的个人博客!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值