Vue vue.config.js 的详解与配置

news2025/2/28 12:49:50

Vue vue.config.js 的详解与配置

1. 为什么要配置 vue.config.js

由于 vue-cli 3 也学习了 rollup 的零配置思路,所以项目初始化后,没有了以前熟悉的 build 目录,也就没有了 webpack.base.config.js、webpack.dev.config.js 、webpack.prod.config.js 等配置文件。

但是有些内容需要进行相关的配置,所以我们还是要创建一个vue.config.js来进行数据修改,比如代理啥的

2.里面的配置详解

vue.config.js 文件是一个可选的配置文件,存放在根目录中,要是有这个文件,在@vue/cli-service 启动的时候会自动加载,所以我们在修改里面的内容之后,要进行项目重新加载。 同时你也可以在package.json中的vue字段(这里有时间在研究)
在这里插入图片描述
配置选项:
首先页面里面出现这个 没有就自己写
在这里插入图片描述
每次在用的时候都是直接从网上找一个复制下来,用到哪个地方修改哪里,但是一直不知道具体是怎么操作,怎么使用,毕竟这关系到项目的架构,还是直接明白所有的用法靠谱,最后会写一个复制用的,但是还是顺着看完。

首先是 publicPath 
		{
			Type(类型): string
			Default(默认): '/'
		}
  1.项目部署的基础路径
  2.我们默认假设你的应用将会部署在域名的根部,
  3.比如 https://www.my-app.com/
  4.如果你的应用时部署在一个子路径下,那么你需要在这里
    指定子路径。比如,如果你的应用部署在
    https://www.foobar.com/my-app/
    那么将这个值改为 `/my-app/`

拓展:把开发服务器假设在根路径,可以直接使用一个判断
    publicPath :process.env.NODE_ENV === 'production' ? '/production-sub-path/' : '/'


outputDir (基本不动,打包目录不都是用那个吗)
		{
			Type(类型): string
			Default(默认): 'dist'
		}
	1.将构建好的文件输出到哪里(或者说将编译的文件),
	当运行 vue-cli-service build 时生成的生产环境构建文件的目录。
	注意目标目录在构建之前会被清除 (构建时传入 --no-clean 可关闭该行为)
assetsDir (基本上都是默认)
		{
			Type(类型): string
			Default(默认): ''
		}
	1.放置生成的静态资源 (js、css、img、fonts) 的目录。
	(我没懂):从生成的资源覆写 filename 或 chunkFilename 时,assetsDir 会被忽略。

indexPath (没动过)
		{
			Type(类型): string
			Default(默认): 'index.html'
		}
	1.指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。

filenameHashing (默认就行)
		{
			Type(类型): boolean
			Default(默认): true
		}
1(摘录).默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。
然而,这也要求 index 的 HTML 是被 Vue CLI 自动生成的。
如果你无法使用 Vue CLI 生成的 index HTML,你可以通过将这个选项设为 false 来关闭文件名哈。

注意:这个是比较重要的有延伸,vue感觉上侧重于单页面应用,意思就是只有一个页面,里面的操作都是通过组件的切换来完成的但是你也可以使用多页面

单页面应用(spa)

概念:只有一个html页面,所有跳转方式都是通过组件切换完成的。
优点:页面之间跳转流畅、组件化开发、组件可复用、开发便捷、易维护。
缺点:首屏加载较慢,加载整个项目中使用的css、js,SEO优化不好。

多页面应用(mpa)

概念:整个项目有多个html,所有跳转方式都是页面之间相互跳转的。
优点:首屏加载较快,只加载本页所使用的的css、js,SEO优化较好。
缺点:页面跳转较慢。

vue 如何实现多页面应用 https://www.jianshu.com/p/eceb2ac9df90
vue中如何配置多页面配置 https://www.jianshu.com/p/52c4913e0bf4

pages (我相信将来我会用到的)
		{
			Type(类型): Object
			Default(默认): undefined
		}
	1.在 multi-page(多页)模式下构建应用。
	每个“page”应该有一个对应的 JavaScript 入口文件。
  举例子:
  // 用于多页配置,默认是 undefined
  pages: {
    index: {
      // 入口文件
      entry: 'src/main.js',  /*这个是根入口文件*/
      // 模板文件
      template: 'public/index.html',
      // 输出文件
      filename: 'index.html',
      // 页面title
       // 当使用 title 选项时,
      // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
      title: 'Index Page'
    },
    // 简写格式
    // 模板文件默认是 `public/subpage.html`
    // 如果不存在,就是 `public/index.html`.
    // 输出文件默认是 `subpage.html`.
    subpage: 'src/main.js'    /*注意这个是*/
  },

lintOnSave (默认)
		{
			Type(类型):  boolean | 'error'
			Default(默认): true
		}
	1. 是否在保存的时候使用 `eslint-loader` 进行检查。 
	2. 有效的值:`ture` | `false` | `"error"`  当设
	置为 `"error"` 时,检查出的错误会触发编译失败。
	3. 是否在保存的时候使用 `eslint-loader` 进行检查。
	4. 有效的值:`ture` | `false` | `"error"`
	5. 当设置为 `"error"` 时,检查出的错误会触发编译失败

(默认 我没用过)
		{
			Type(类型):  boolean
			Default(默认): false
		}
	1. 是否使用带有浏览器内编译器的完整构建版本
	2. 设置为 true 后你就可以在 Vue 组件中使用 template 选项了,
	但是这会让你的应用额外增加 10kb 左右。

transpileDependencies (没用过)
		{
			Type(类型):  Array<string | RegExp>
			Default(默认): []
		}
	1. 默认情况下 babel-loader 会忽略所有 node_modules 中的文件。
	如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来
	3. babel-loader 默认会跳过 node_modules 依赖。
	4. 通过这个选项可以显式转译一个依赖。

productionSourceMap (就只是知道这么个意思)
		{
			Type(类型): boolean
			Default(默认): true
		}
	1. 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。

crossorigin (不知道)
 		{
			Type(类型): string
			Default(默认): undefined
		}
1.在生成的 HTML 中的 <link rel="stylesheet"><script> 标签上启用 Subresource Integrity 
	(SRI)。
如果你构建后的文件是部署在 CDN 上的,启用该选项可以提供额外的安全性。

Webpack相关配置

configureWebpack
		Type:Object | Function
		
		1.如果这个值是一个对象,则会通过 webpack-merge 合并到最终的配置中。
        2.如果这个值是一个函数,则会接收被解析的配置作为参数。
        该函数及可以修改配置并不返回任何东西,也可以返回一个被克隆或合并过的配置版本。 
        
chainWebpack
		Type: Function
		1.是一个函数,会接收一个基于 webpack-chain 的 ChainableConfig 实例。
		允许对内部的 webpack 配置进行更细粒度的修改。


Css相关配置

// CSS 相关选项
  css: {
    extract: true,
    	Type: boolean | Object
         1. 将组件内的 CSS 提取到一个单独的 CSS 文件 (只用在生产环境中)
         2. 也可以是一个传递给 `extract-text-webpack-plugin` 的选项对象
        
    sourceMap: false,
	    {
			Type(类型): boolean
			Default(默认): false
		}
		1. 是否开启 CSS source map? 设置为 true 之后可能会影响构建的性能。

    loaderOptions: {},
	    {
			Type(类型): Object
			Default(默认):  {}
		}
		1. 为预处理器的 loader 传递自定义选项。比如传递给
        2. sass-loader 时,使用 `{ sass: { ... } }`modules: false
        {
			Type(类型): boolean
			Default(默认): false
		}
		    1.为所有的 CSS 及其预处理文件开启 CSS Modules。
    		2. 这个选项不会影响 `*.vue` 文件。
         
  },


 // 在生产环境下为 Babel 和 TypeScript 使用 `thread-loader`
  // 在多核机器下会默认开启。
  parallel: require('os').cpus().length > 1,

  // PWA 插件的选项。
  // 查阅 https://github.com/vuejs/vue-cli/tree/dev/packages/@vue/cli-plugin-pwa
  pwa: {},

代理配置

	如果你的前端应用和后端 API 服务器没有运行在同一个主机上,
	你需要在开发环境下将 API 请求代理到 API 服务器。
	这个问题可以通过 vue.config.js 中的 devServer.proxy 选项来配置。
我们前边的 axios 就说了
	  // 配置 webpack-dev-server 行为。
  devServer: {
    open: process.platform === 'darwin',
    host: '0.0.0.0',
    port: 8080,
    https: false,
    hotOnly: false,
    proxy: {
          '/api': {
                target: 'http://localhost:8880',
                changeOrigin: true,
                secure: false,
                // ws: true,
                pathRewrite: {
                    '^/api': '/static/mock'   
                    // 请求数据路径别名,这里是注意将static/mock放入public文件夹
                }
          }
   },
   before: app => {}
  },

简洁版 很多都是默认的 不需要修改

module.exports = {
    // publicPath:process.env.NODE_ENV === 'production' ? '/vue_workspac/aihuhuproject/' : '/',

    //基本路径
    publicPath: './',//默认的'/'是绝对路径,如果不确定在根路径,改成相对路径'./'
    // 输出文件目录
    outputDir: 'dist',
    assetsDir: 'static',
    indexPath: 'index.html',
    // eslint-loader 是否在保存的时候检查
    lintOnSave: true,
    // 生产环境是否生成 sourceMap 文件
    productionSourceMap: false,
    // css相关配置
    css: {
        // 是否使用css分离插件 ExtractTextPlugin
        extract: true,
        // 开启 CSS source maps?
        sourceMap: false,
    },
    // webpack-dev-server 相关配置
    devServer: {
        open: false,//open 在devServer启动且第一次构建完成时,自动用我们的系统的默认浏览器去打开要开发的网页
        host: '0.0.0.0',//默认是 localhost。如果你希望服务器外部可访问,指定如下 host: '0.0.0.0',设置之后之后可以访问ip地址
        port: 8080,
        hot: true,//hot配置是否启用模块的热替换功能,devServer的默认行为是在发现源代码被变更后,通过自动刷新整个页面来做到事实预览,开启hot后,将在不刷新整个页面的情况下通过新模块替换老模块来做到实时预览。
        https: false,
        hotOnly: false,// hot 和 hotOnly 的区别是在某些模块不支持热更新的情况下,前者会自动刷新页面,后者不会刷新页面,而是在控制台输出热更新失败
        proxy: {
            '/': {
                target: 'http://xxxx:8080', //目标接口域名
                secure: false, //false为http访问,true为https访问
                changeOrigin: true, //是否跨域
                pathRewrite: {
                    '^/': '/' //重写接口
                }
            }
        }, // 设置代理
        before: app => { }
    },
    // 第三方插件配置
    pluginOptions: {
        // ...
    }
};

总结 (重要):

1 vue在工程化开发的时候依赖于 webpack ,而webpack是将所有的资源整合到一块后形成一个html文件 一堆 js文件, 如果将vue实现多页面应用,就需要对他的依赖进行重新配置,也就是修改webpack的配置文件.
vue的开发有两种,一种是直接的在script标签里引入vue.js文件即可,个人感觉做小型的多页面会比较舒坦,一旦做大型一点的项目,还是离不开webpack。所以另一种方法也就是基于webpack和vue-cli的工程化开发。

2 webpack 有个特性,基本的功能都是可以用配置去实现的,所以就造成一个特点“很容易忘记它”,所以就很有必要记录一下
简述一下

webpack 分为
	Entry:入口
	Output: 出口
	Module 模块
	Plugin 插件
	DevServer 服务器配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML中的表格和表单(含有示例代码)

表格表格的基本构成标签 table标签&#xff1a;表格标签 caption标签&#xff1a;表格标题tr标签&#xff1a;表格中的行 th标签:表格的表头 td标签&#xff1a;表格单元格表格的基本结构 <table>定义表格 <caption>表格标题</caption><tr>定义表行 &l…

vue3 + vite 性能优化 ( 从5s -> 0.5s )

Ⅰ、Vue Vite 构建项目性能优化 vite 相比于 webpack 优势显著&#xff1b;然而 社区&#xff0c;却 不够成熟 &#xff0c;参考资料较少&#xff1b;如何让vue vite 构建项目变的 访问秒开 &#xff08;要想足够快&#xff0c;就是让首次加载足够小&#xff09;&#xff0c…

安装nvm,并使用nvm安装nodejs及配置环境变量

一、安装nvm 1.下载nvm 解压后点击exe文件进行安装&#xff1a; 2、点击下一步安装到 D:\NVM 下 3、先在D:\NVM 下创建nodejs文件夹&#xff0c;然后将路径设置如下&#xff1a; 4、点击next 一直点击 完成安装&#xff1b; 5、找到指定nvm打开后&#xff1a; 给该文件添加这…

关于 Token 过期问题的两种解决方案

对于token过期&#xff0c;我们有两种方案&#xff1a; 方案一&#xff1a;当我们操作某个需要token作为请求头的接口时&#xff0c;返回的数据错误error.response.status 401&#xff0c;说明我们的token已经过期了。 我们希望当响应返回的数据是401身份过期时&#xff0c;让…

【学Vue就跟玩一样】如何使用vue中的消息订阅与发布,如何使用vue实现动画效果

一&#xff0c;消息订阅与发布1.什么是消息订阅与发布消息订阅与发布是一种组件间通信的方式&#xff0c;适用于任意组件间通信。能更好的实现组件间通信&#xff08;消息订阅与发布就像是送报员一样。好比小a向报社订阅了一份报纸&#xff0c;然后在报社留下了自己的信息&…

Web 开发与搜索引擎优化,你应该选择哪一个?

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】** 目录什么是搜索引…

什么是BFC,他有什么用?

1、什么是BFC BFC - Block Formatting Context 块级格式化上下文 BFC的定义&#xff0c;在官方文档到中是这么介绍的&#xff1a;一个BFC区域包含创建该上下文元素的所有子元素&#xff0c;但是不包括创建了新的BFC的子元素的内部元素&#xff0c;BFC是一块块独立的渲染区域&a…

【Three.js基础】创建场景、渲染场景、创建轨道控制器(一)

&#x1f431; 个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域新星创作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4ab;系列专栏&#xff1a;vue3从入门…

Web服务器配置管理

作者&#xff1a;敲代码の流川枫 博客主页&#xff1a;流川枫的博客 专栏&#xff1a;和我一起学java 语录&#xff1a;Stay hungry stay foolish 工欲善其事必先利其器&#xff0c;给大家介绍一款超牛的斩获大厂offer利器——牛客网 点击免费注册和我一起刷题吧 文章目录…

CSS,HTML,JS 以及Vue前端面试题八股文总结【看完你就变高手】

■ 符号说明&#x1f498; 主题&#x1f31f; 常见重要&#x1f31b; 需要有印象的&#x1f195; v3新特性■ 杂谈&#x1f31b; SEO优化合理的title、description、keywords&#xff1a;搜索对着三项的权重逐个减小&#xff0c;title值强调重点即可&#xff1b;description把页…

vue3面试题:2022 最新前端 Vue 3.0 面试题及答案(持续更新中……)

1、 Vue2.0 和 Vue3.0 有什么区别&#xff1f; 响应式系统的重新配置&#xff0c;使用代理替换对象.define属性&#xff0c;使用代理优势&#xff1a; 可直接监控阵列类型的数据变化监听的目标是对象本身&#xff0c;不需要像Object.defineProperty那样遍历每个属性&#xff0…

20分钟上手ES6,不会ES6好意思说自己会JS ?

✍&#x1f3fc;作者&#xff1a;周棋洛&#xff0c;大二计算机学生 ♉星座&#xff1a;金牛座 &#x1f3e0;主页&#xff1a;点击查看更多 &#x1f310;关键&#xff1a;ES6 javascript 前端 文章目录理解ES6ES6 块级作用域 letES6 解构数组ES6 解构对象ES6 模板字符串ES6 判…

【Spring】IOC,你真的懂了吗?

作者:狮子也疯狂 专栏:《spring开发》 坚持做好每一步,幸运之神自然会驾凌在你的身上 目录 一. 🦁 前言二. 🦁 控制反转(IOC)Ⅰ. 🐇主要思想Ⅱ. 🐇原生技术创建实例弊端Ⅲ. 🐇自定义对象容器3.1 准备数据3.2 创建配置文件3.3 创建容器管理类3.4 创建StudentSer…

JS 数组中的 filter 方法

1、定义 filter()创建一个新的数组&#xff0c;新数组中的元素是通过检查指定数组中符合条件的所有元素。 2、语法 array.filter(function(currentValue,index,arr), thisValue); 3、参数说明 返回 4、用法 filter() 方法用于把Array中的某些元素过滤掉&#xff0c;然后返回…

echarts实现3d柱状图的两种方式

echarts实现3d柱状图的两种方式 看了不少关于3d柱状图的案例,发现做3d柱状图 常用的两种方式就是 自定义图形和象型柱图, 两种实现方式效果如下: 方法1: echarts.graphic.extendShape 自定义图形 echarts自定义图形的详细用法点这里, 官网点这里, 图中第一个3d柱状图我参考…

unplugin-auto-import 和 unplugin-vue-components

背景 unplugin-auto-import&#xff1a;为 Vite、Webpack、Rollup 和 esbuild 按需自动导入 API。支持 TypeScript。 unplugin-vue-components&#xff1a;Vue 的按需组件自动导入。 这两个插件都是涉及到按需自动导入&#xff0c;所以我们在使用 Vue 和其对应的 组件之类时…

最全的—— ES6有哪些新特性?

目录ES6新特性1、let和const2、symbol3、模板字符串3.1 字符串新方法&#xff08;补充&#xff09;4、解构表达式4.1 数组解构4.2 对象解构5、对象方面5.1 Map和Set5.1.1 Map5.1.2 Set5.3 数组的新方法5.3.1 Array.from()方法5.3.2 includes()方法5.3.3 map()、filter() 方法5.…

ES6中的箭头函数详细梳理

一、箭头函数的介绍 1.1 什么是箭头函数 ES6中允许使用>来定义函数。箭头函数相当于匿名函数&#xff0c;并简化了函数定义。 1.2 基本语法 // 箭头函数 let fn (name) > {// 函数体return Hello ${name} !; };// 等同于 let fn function (name) {// 函数体return …

vue是什么?vue的优点有哪些?

目录 一、vue是什么 二、为什么要用Vue&#xff1f; 1. 组件化 2. MVVM 数据双向绑定 3. 响应式 虚拟DOM 4.生命周期 三、Vue的优点 1. 轻量级 2. 高性能 3. 好上手 4. 插件化 5. 便于测试 6.运行速度更快 7.视图,数据,结构分离 一、vue是什么 Vue是一套用于构建…

vue基础用法基础原理整理

vue基础用法&基础原理整理 md文件地址&#xff1a;https://gitee.com/gaohan888/note 1. vue基础知识和原理 1.1 初识Vue 想让Vue工作&#xff0c;就必须创建一个Vue实例&#xff0c;且要传入一个配置对象demo容器里的代码依然符合html规范&#xff0c;只不过混入了一些特…