Vue项目打包问题(生产环境样式失效)

这篇具有很好参考价值的文章主要介绍了Vue项目打包问题(生产环境样式失效)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在公司项目发布上线后,出现了部分样式失效的问题。我们引用的是vuetify第三方库,经过检查,发现是部分样式被vuetify自带的css样式给覆盖,原因是生成环境的打包模式与开发环境不同。

打包模式的区别

  • 生产模式(env.prod)

生产模式下打包,项目会被最小化,所有的css代码会被提取出来放在同一文件夹下(这也是上线后样式出现问题的根本原因)

  • 开发模式

开发模式打包并不会改变项目的层次结构,换句话说,我们在写代码过程中,页面长啥样,打包上线后就是原本的样式,该模式下并不会改变代码。但是该模式打包后的dist文件依旧比生产模式打包后的项目大很多。

案例

Vue项目打包问题(生产环境样式失效)

首先我们要知道为什么vuetify的样式会覆盖自定义样式,因为自定义的样式优先级不够高!在生产模式下,所有css代码会被提取到一个文件夹下,而第三方库的css一般会多个类名绑定(例如: .themelight .v-btn),如果自定义样式只绑定一个类名(没有在父类的作用域下),样式优先级不够高,就会被覆盖。

解决方案

  • 方案一:配置vue.config.js文件

vue.config.js文件中将css的extract设置为false,生产环境打包默认为true,这个选项会把css代码提取到一个文件夹下。注意:开发环境的extract选项默认为false

const webpack = require('webpack')
module.exports = {
  css: {
    extract: false
  }
};
  • 方案二:覆盖第三方组件原有的类,或者加样式穿透

当我们想修改第三方组件的样式时,可以选择覆盖其原有的类

<template>
   <div class="button-box">
      <v-btn>Submit</v-btn>
   </div>
</template>

<style lang="sass" scoped>
.button-box
  //v-btn是当前组件已有的类,在这里设置属性可以覆盖原有的
  .v-btn
    color:#020202   
</style>

也可使用>>>来提升样式优先级,俗称样式穿透

<template>
   <div class="button-box">
      <v-btn class="submit-btn">Submit</v-btn>
   </div>
</template>

<style lang="sass" scoped>
.button-box >>> .submit-btn
  color: #020202
</style>
  • 方案三:该方案用于解决紧急情况下需要发布上线(并不能缩小打包后的体积)

在.env.production文件中修改环境变量文章来源地址https://www.toymoban.com/news/detail-514302.html

// 本应该是production,这里紧急解决问题,可改为develop,以开发环境的打包模式发布上线
NODE_ENV = 'develop'

到了这里,关于Vue项目打包问题(生产环境样式失效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3 开发环境和生产环境打包配置

    Vue3打包环境配置 工作中通常开发环境和正式环境使用的请求地址是不同的 ,大多数的做法是手动更改请求地址,但是手动的去更改导致错误的几率会更大,所以vue-cli3提供了 ‘环境变量与模式’ (模式和环境变量 | Vue CLI),通过这个方法我们可以通过命令的方式更改请求

    2023年04月17日
    浏览(17)
  • vue打包后与本地测试样式不同问题,element-ui样式打包部署前后样式不同。

    个别文件的样式中style未加scope 。 查找到一些文件中修改了对应页面的elementUI的样式,但未加scope 给style加上scope,就好了。

    2024年01月25日
    浏览(26)
  • vue cli 打包、生产环境http-proxy-middleware代理

    结构树 版本 1、创建vue.config.js 如果采用了本地cdn则index.html 2、创建ecosystem.config.js 3、创建himdcs.js 4、修改package.json 5、部署到docker 6、http-proxy-middleware参数说明 option.target:url字符串将与url模块解析 option.forward:url字符串将与url模块解析 option.target:传递给http(s)请求的对象(参

    2024年02月09日
    浏览(23)
  • vue 全局引用vant 项目打包之后vant样式不生效

    描述: vue全局引用vant-UI框架,本地开发时没有问题;项目打包部署之后,vant样式部分失效。 查看控制面板,定位到vant样式表,发现样式表没有全部加载。 解决: 下载 vant-ui-style.css 样式表,本地引用。 vant-ui-style.css  放在 public 文件夹下,在 index.html 中调用 注意: (1)若

    2024年02月11日
    浏览(34)
  • 项目部署后,前端vue代理失效问题解决

    title:工作日记,前段后分离项目,在部署时遇到的问题,Vue项目打包成dist文件之后放在服务器上,通过运行java-jar包,在application.yml中引入静态资源的方式访问前端。如下图所示: 问题1 :前端页面是可以访问到了,但是后端访问不到,在本地中运行就可以。 首先前端我在

    2024年02月03日
    浏览(17)
  • webpack与vue-cli合并配置,打包生产环境代码时如何删除所有的console.log、代码注释和debugger

    本文基于vue-cli 5.0.0,webpack 5.0,TerserWebpackPlugin 最近公司项目开发上线后,发现控制台有很多当时测试时打印的信息。但是如果手动删除然后打包的话工作量太大,而且不利于以后的维护和debugger。所有必须通过webpack打包时自动帮我们删除console和注释。 第一步上网找到webpack关于

    2024年02月04日
    浏览(25)
  • vscode中 vue3+ts 项目的提示失效,volar插件失效问题解决方案

    说起来很耻辱,从mac环境换到window环境,vscode的配置都是云端更新过来的,应该是一切正常才对,奇怪的是我的项目环境出现问题了,关于组件的ts和追踪都没有效果,再经过一上午的排查和试错后,终于被我解决,问题的原因是volar和ts环境之间的版本不匹配,下面来看下我

    2024年02月03日
    浏览(21)
  • vue项目打包失败问题记录

    项目\\\"vue\\\": \\\"^2.7.14\\\"版本 起因: 项目里安装了openlayers最新版本的地图插件,打包会成功,但是打包页面会有红色提示           刚开始根据红色提示百度找到相同错误的方法提供了的一系列提示安装啊,卸载,装了              node-modules,又卸了来来回回搞了好几遍没用,

    2023年04月10日
    浏览(18)
  • vue项目跨域问题(图片跨域)devServer.proxy代理失效时,nginx反向代理解决跨域问题

    ​ 本篇文章主要记录个人在公司项目开发中所遇问题,主要内容:在vue项目的开发中图片所存的服务器/端口号和项目所在的服务器/端口号不同,出现了跨域问题的保错。 ​ 如果文章有歧义,请各位大佬指出,避免误导更多的人!! Bug起因 ​ 在vue项目的开发中图片所存的

    2024年02月15日
    浏览(18)
  • vue2项目打包遇到的问题(记录)

    临时纯手工搭建开发了个vue2小项目,打包后出现了很多问题 一、打包后index.html打开空白 打包后整个页面空白,是因为打包后资源路径不对,需要修改config-index.js下, build 属性中assetsPublicPath值为 ./ 二、打包后图片等静态资源无法显示 需要修改build下utils.js文件,新增一句话

    2024年02月16日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包