Vue CLI4 Vue.config.js标准配置(最全注释)

下面是详细讲解“Vue CLI4 Vue.config.js标准配置(最全注释)”的完整攻略。

什么是Vue CLI4?

Vue CLI是Vue.js官方提供的一个“脚手架”工具,它可以帮助我们快速构建Vue.js项目的基础代码结构。

Vue CLI4是Vue CLI的一个全新版本,它提供了更加简单、灵活、功能更加强大的CLI工具,使得我们可以更加方便地使用Vue.js进行开发。

什么是Vue.config.js?

Vue.config.js是一个可选的配置文件,它可以用于配置Vue CLI4的一些默认配置。在使用Vue CLI4创建项目时,Vue CLI会自动去寻找该文件并解析其中的配置项。

Vue.config.js配置项

以下是Vue.config.js常用的配置项及其默认值:

module.exports = {
  /** 基本路径 */
  publicPath: '/',
  /** 输出文件目录 */
  outputDir: 'dist',
  /** 静态资源目录 */
  assetsDir: 'static',
  /** 文件名hash */
  filenameHashing: true,
  /** 是否使用eslint */
  lintOnSave: true,
  /** 是否在生产环境中开启sourceMap */
  productionSourceMap: false,
  /** webpack-dev-server配置 */
  devServer: {
    /** 代理 */
    proxy: null,
  },
  /** css相关配置 */
  css: {
    /** 是否开启sourceMap */
    sourceMap: false,
    /** css预设器配置项 */
    loaderOptions: {},
    /** 是否启用css分离插件 */
    extract: true,
  },
};

下面是这些配置项的详细说明:

publicPath

  • 类型:string
  • 默认值:'/'

该配置项用于配置项目的基本路径。当我们有一些静态资源需要引用时,通常会使用相对路径或绝对路径。但是相对路径在不同的路由下可能会有问题,而绝对路径又可能会有跨域等问题。因此我们可以使用publicPath来配置项目的基本路径,这样我们就可以使用相对路径的方式引用静态资源了。

outputDir

  • 类型:string
  • 默认值:'dist'

该配置项用于配置打包后的输出目录。当我们使用npm run build打包项目时,打包后的文件会被放到该目录中。

assetsDir

  • 类型:string
  • 默认值:'static'

该配置项用于配置静态资源的目录。当我们使用npm run build打包项目时,静态资源会被放到该目录中。

filenameHashing

  • 类型:boolean
  • 默认值:true

该配置项用于配置文件名的hash值是否启用。当该配置项为true时,打包后的文件名会被添加hash值,从而保证文件名的唯一性。

lintOnSave

  • 类型:boolean|'error'|'warning'
  • 默认值:true

该配置项用于配置是否在开发过程中启用eslint,并定义eslint的错误级别。当该配置项为true时,eslint会在开发过程中启用,并且定义的错误级别为'warning'。当该配置项为'error'时,eslint会直接中断编译,并输出错误信息。当该配置项为'warning'时,eslint会输出警告信息,但不会中断编译。

productionSourceMap

  • 类型:boolean
  • 默认值:false

该配置项用于配置在生产环境中是否启用sourceMap。当该配置项为true时,sourceMap会被启用,方便我们在调试生产环境的代码时进行定位。

devServer

  • 类型:Object
  • 默认值:
{
  /** 代理 */
  proxy: null,
}

该配置项用于配置webpack-dev-server的相关配置。当我们使用npm run serve启动开发服务器时,webpack-dev-server会使用该配置项中定义的配置进行启动。

下面是该配置项中常用的一个配置项:

proxy

  • 类型:string|Object
  • 默认值:null

该配置项用于配置开发服务器的proxy代理。当我们在开发过程中需要请求后端API时,可能会遇到跨域的问题。此时我们可以配置proxy代理来解决该问题。proxy可以是一个字符串或者一个对象。当proxy为字符串时,它会被解析成一个对象。proxy对象可以包含以下属性:

  • target:string类型,必填项。代理的目标服务器地址。
  • changeOrigin:boolean类型,可选。是否开启跨域访问。
  • pathRewrite:Object类型,可选。重写请求路径。

css

  • 类型:Object
  • 默认值:
{
  /** 是否开启sourceMap */
  sourceMap: false,
  /** css预设器配置项 */
  loaderOptions: {},
  /** 是否启用css分离插件 */
  extract: true,
}

该配置项用于配置应用的css。

下面是该配置项中常用的一个配置项:

loaderOptions

  • 类型:Object
  • 默认值:{}

该配置项用于配置css预处理器的loader选项。该选项的使用方式与在webpack中配置loader选项相同。

最全注释示例1

module.exports = {
  /**
   * 手动指定入口文件
   * entry为 object 时,表现如下:
   * 如配置多个入口,可使用 entry:{key1:'file1.js',key2:'file2.js'} 的方式命名最终生成的文件名
   */
  // entry: {
  //   // 配置多个入口,打包多个文件,使用了 entry:{key1:'file1.js',key2:'file2.js'} 的方式命名最终生成的文件名
  //   index: ['@babel/polyfill', './src/main.js'],
  //   mobile: ['@babel/polyfill', './src/mobile.js'],
  // },
  /**
   * 在内部的webpack配置中,向所有 Sass 样式传入共享的全局变量,而不需要显式地导入它们
   * 可以在 sass 文件中使用 `$main-color`,而不需要知道变量 main-color 所映射的实际值。
   */
  css: {
    loaderOptions: {
      sass: {
        // 所有 Sass/Scss 文件都会共享 these 的全局变量
        prependData: `@import "@/assets/scss/these.scss";`,
      },
    },
  },
  /**
   * chainWebpack 能够接收一个链式函数,它会在内部被定义的 webpack-chain 引用。
   * 如果在你的插件里使用了 chainWebpack 配置,则会与其他插件定义拼接在一起后,一同作用于webpack的内部配置。
   */
  chainWebpack: (config) => {
    // 添加别名
    config.resolve.alias
      .set('@', resolve('src'))
      .set('@assets', resolve('src/assets'))
      .set('@scss', resolve('src/assets/scss'))
      .set('@components', resolve('src/components'))
      .set('@views', resolve('src/views'))
      .set('@plugins', resolve('src/plugins'))
      .set('@router', resolve('src/router'))
      .set('@store', resolve('src/store'))
      .set('@common', resolve('./src/common'));

    // 对图片进行压缩处理
    config.module
      .rule('images')
      .use('image-webpack-loader')
      .loader('image-webpack-loader')
      .options({
        mozjpeg: { pessimistic: true },
        optipng: { enabled: false },
        pngquant: { quality: [0.75, 0.90], speed: 4 },
        gifsicle: { interlaced: false },
        webp: { quality: 75 },
      });

    // 打包分析(通过 "npm run build --report" 生成)
    if (process.env.NODE_ENV === 'production' && process.env.BUNDLE_ANALYSIS) {
      config.plugin('webpack-bundle-analyzer').use(BundleAnalyzerPlugin);
    }
  },
};

该配置项在Vue.config.js中配置了entry、css、chainWebpack等选项,并对这些选项进行了详细的注释说明。其中,该配置项使用了三条示例代码:

  • 示例代码一:手动指定入口文件。
  • 示例代码二:向所有 Sass 样式传入共享的全局变量。
  • 示例代码三:使用chainWebpack方法添加别名,并对图片进行压缩处理。

最全注释示例2

module.exports = {
  /**
   * 设置跨域请求
   */
  devServer: {
    open: true,
    port: 8080, // npm run serve 启动的端口
    // proxy API 到后端的服务地址
    proxy: {
      // '/api': 'http://localhost:3000', // 配置了一个  http://localhost:8080/api/user 路径下的请求,会自动转发到 http://localhost:3000/user
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        pathRewrite: {
          '^/api': '',
        },
      },
    },
  },
  /**
   * chainWebpack 能够接收一个链式函数,它会在内部被定义的 webpack-chain 引用。
   * 如果在你的插件里使用了 chainWebpack 配置,则会与其他插件定义拼接在一起后,一同作用于webpack的内部配置。
   */
  chainWebpack: (config) => {
    /**
     * 因为官方只提供了 vue.runtime.js,如果你有写 template 用 compiler,那么需要修改以下 webpack 配置
     */
    if (process.env.NODE_ENV === 'production') {
      config.module.rule('vue').test(/\.vue$/).use('vue-loader').loader('vue-loader').tap((options) => {
        options.compilerOptions = {
          ...options.compilerOptions,
          isCustomElement: (tag) => tag.startsWith('ion-'),
        };
        return options;
      });
    }
  },
};

该配置项在Vue.config.js中配置了devServer、chainWebpack等选项,并对这些选项进行了详细的注释说明。其中,该配置项使用了两条示例代码:

  • 示例代码一:设置跨域请求。
  • 示例代码二:修改webpack配置以支持使用compiler编写template。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue CLI4 Vue.config.js标准配置(最全注释) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue表单及表单绑定方法

    Vue表单及表单绑定方法是Vue框架中重要的一部分,用于维护表单中输入数据的状态,并将这些状态反映在视图中。本文将介绍Vue表单及表单绑定方法的完整攻略。 1. Vue表单基本概念 在Vue中表单通常指用户可以输入的数据。表单通常由各种表单控件组成,例如文本框、下拉框、单选框、复选框等。当用户在表单控件中输入数据时,Vue会自动建立起该表单的数据模型。 Vu…

    Vue 2023年5月27日
    00
  • NodeJS落地WebSocket实践前端架构师破局技术

    让我详细讲解一下“NodeJS落地WebSocket实践前端架构师破局技术”的完整攻略。 什么是WebSocket WebSocket是一种基于TCP协议的新型网络通信协议,它可以实现客户端和服务器端的双向通信,可以使得我们在Web应用中实现实时交互。WebSokcet协议比HTTP协议更加高效,具有延迟小、传输快、实时性好等优点,特别适合于实时通信和大数据…

    Vue 2023年5月28日
    00
  • 如何使用HBuilderX把vue项目打包成apk

    下面是使用HBuilderX将Vue项目打包成APK的攻略: 确保环境配置正确 在使用HBuilderX打包Vue项目之前,需要先确保一些环境配置已经正确安装。具体需要安装的软件如下: JDK环境:移动端应用打包需要使用到Java环境,所以首先需要下载和安装JDK。下载JDK的网址为:https://www.oracle.com/technetwork/cn…

    Vue 2023年5月28日
    00
  • 一篇文章让你看懂封装Axios

    我来为你讲解。 一篇文章让你看懂封装 Axios – 完整攻略 前言 Axios 是一个基于 promise 的 HTTP 请求库,可以用于浏览器以及 Node.js 环境中。由于 Axios 功能强大,使用简单便捷,因此被广泛用作前后端交互的请求库。但是,如果每个请求都是单独的一个函数去处理的,那么代码会变得很冗长,不易维护。因此我们需要封装 Axios。…

    Vue 2023年5月28日
    00
  • vue路由划分模块并自动引入方式

    Vue 路由划分模块并自动引入方式可以让我们在开发过程中更加方便地管理和维护路由,以下是详细攻略: 划分模块 为了更好地管理路由,我们可以将相似的路由放置于同一文件夹中,比如: – src – pages – home – index.vue – children.vue – about – index.vue – children.vue 其中,home …

    Vue 2023年5月28日
    00
  • vue+axios实现post文件下载

    下面是 vue+axios 实现 post 文件下载的攻略: 1. 前置条件 在进行 post 文件下载的功能实现之前,需要确保你已经安装了以下依赖: Vue.js:用于前端开发 axios:用于网络请求 file-saver:用于文件下载 如果还没有安装,可以使用以下命令进行安装: npm install vue axios file-saver –sa…

    Vue 2023年5月28日
    00
  • vue实现简单的跑马灯效果

    下面是“Vue实现简单的跑马灯效果”的完整攻略: 准备工作 首先,我们需要在项目中安装 Vue.js。可以使用以下命令安装: npm install vue 实现过程 创建 Vue 实例: new Vue({ el: ‘#app’, data: { text: ‘这是一段跑马灯文字’, speed: 100, left: 0 }, methods: { mo…

    Vue 2023年5月29日
    00
  • vue使用directive限制表单输入整数、小数的方法

    下面是详细讲解“vue使用directive限制表单输入整数、小数的方法”的完整攻略: 一、什么是directive 在Vue中,Directive(指令)是一种特殊的标记,它可以在模板中添加行为。在Vue中,有很多自带的directive,例如v-model、v-if、v-show等。通过使用Directive,开发者可以自定义自己的指令。Vue中,Dir…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部