文章目录

  • 一、问题描述
  • 二、问题分析
  • 三、解决方法
  • 总结

一、问题描述

CSS全局样式,元素的样式,均无法被打包引入,样式引入的代码打包后,在生成main.js中直接没有。打包之后的代码都通过eval执行,但是无法找到上述样式代码。


二、问题分析

当初配置tree shaking的时候,没有太注意细节,就一直在package.json中配置 "sideEffects": false,。当时配置的时候出发点是好的,就是当我引入一个模块的时候,我不引入模块中所有的代码,而是仅引入使用的代码部分。当引入的模块没有使用的时候,就自动用tree shaking把它摇掉。

因为tree shaking只支持静态引入的方式,ES Module的形式;而不支持CommonJS的动态引入方式。因为动态引入的话,tree shaking不能确定在引入之前是需要或者不需要。
我刚好用ES Module的形式引入全局CSS样式,import './style/css',导致的问题就是样式根本不会加载,直接被tree shaking摇掉了,默认当前css模块没有使用。有被自己坑到,检查了好久…

当使用CSS Module的时候,import style from ‘./style.css’; 有时候会突然加载出样式,当时觉得很迷惑,现在想想,只是在下面的React里面className中用到了 className={ style.btn },从而全局样式就被加载了。现在终于想通了。


三、解决方法

解决方法:1. 其实我们可以使用require的方式,动态的引入css样式,从而避免被tree shaking摇掉。require('./style.css')
2. 对css文件不做tree shaking,在sideEffect中加入数组,[ “*.css” ],不对css文件进行tree shaking。[推荐]


总结

细心打包,多多思考

sideEffects导致的全局样式消失相关推荐

  1. antd select 下拉菜单的 style 属性_如何优雅地彻底解决 antd 全局样式问题

    背景 由于某些原因,我们团队负责在 GitLab 上做二次开发,简单理解就是在 GitLab 上挂个 DOM 渲染用 React 写的一些组件,组件库选择了 antd,尴尬的是引入之后发现,GitLa ...

  2. 【方法篇·壹】css开发技巧-全局样式设置和局部样式

    目录 前言: 1.全局样式和局部样式设置 2.提升效率重要方法 3.提升效率重要方法-集中处理UI样式 4.提升效率重要方法-学会复制 5. 提升质量方法-flex.百分比.rem布局 6.解决疑难杂 ...

  3. vue 避免全局样式污染的正确做法

    说明问题:样式全局污染产生的bug,会影响到其他页面原有的样式,导致每个页面的样式互相冲突,如果写的代码造成了全局样式污染,导致别人的页面每个地方都要去写自定义页面的代码,导致工作量巨大,严重的话,领 ...

  4. Silverlight之添加全局样式

    本文为原创文,难免会有一些小得瑕疵,敬请谅解. 所有示例均是博主测试过的,如有转载请标明出处,谢谢. 在Asp.Net中,我们可以使用Css+Div来控制样式,在Silverlight中我们也可以使用 ...

  5. styled-components解决全局样式‘injectGlobal‘ 废除的问题

    styled-components解决全局样式'injectGlobal' 废除的问题 参考文章: (1)styled-components解决全局样式'injectGlobal' 废除的问题 (2) ...

  6. 滚动条全局样式修改与局部修改

    全局的样式代码: ::-webkit-scrollbar {width: 10px;height: 10px;}/* 滚动条的滑块 */::-webkit-scrollbar-thumb {backg ...

  7. element ui 设置全局样式不起作用

    今天在写springboot+vue项目的时候出现这样一个问题,我想给所有的按钮添加一个样式,在全局样式表中添加了font-size:13px;但是不起作用,只有单独加到按钮上才起作用,于是到百度上查 ...

  8. Vue使用全局样式,页面没有发生变化:逗号是中文的,引起错误,样式不变化 也没有报错就是不起作用

    因为html后面的逗号是中文符号的,不是英文符号的 /*全局样式表*/ html,body,#app {height: 100%;margin: 0;padding: 0; }

  9. uniapp 全局样式

    前言 在App.vue中,可以一些定义全局通用样式,例如需要加一个通用的背景色,首屏页面渲染的动画等都可以写在App.vue中. 举例 <style>@font-face {font-fa ...

最新文章

  1. Ubuntu开机后一直循环登录,却进不去桌面
  2. RocketMQ学习(一):简介和QuickStart
  3. 深度优先搜索知识总结
  4. C++中public protected private的区别
  5. 网页mp3提取器_用Python写一个酷狗音乐下载器!
  6. 哈夫曼编解码原理与实现【转载】
  7. 【转载】一步步构建大型网站架构
  8. 高斯列元素消去法c语言,【大神在哪里】高斯-列主元消去法
  9. LeetCode513 找左下角的值
  10. 【数字全排列】LeetCode 60. Permutation Sequence
  11. leetcode数组汇总_LeetCode刷题实战74:搜索二维矩阵
  12. 华为认证的好处是什么?考试费是多少?
  13. 《Linux杂记》Window读取 Ext3/Ext4文件系统数据
  14. 用三元组存储稀疏矩阵,实现其快速转置及矩阵相乘
  15. UML学习_1_模型
  16. 122、影响爆炸极限的因素
  17. 无法连接虚拟设备ide1:0,因为主机上没有相应的设备。您要在每次开启此虚拟机时都尝试连接此虚拟设备吗?
  18. 教育智能硬件站上了风口
  19. 什么是Cookie和Session?—— Cookie和Session的区别?—— 一文教你理解清楚什么是Cookie和Session,以及常见的开发面试问题?
  20. vscode在html看到图片的插件_利用花瓣插件 下载高清大图

热门文章

  1. NC文件的处理【netcdf】
  2. mysql将数据拟合曲线_强大的matlab数据科学拟合库cftool——直接导入数据进行拟合...
  3. nginx配置之温故而知新
  4. 微信小程序开发文档——地图
  5. Sql server没有服务器名称怎么办
  6. 大数据HBase入门
  7. 第三章 面向对象(上)
  8. python程序网站_Python程序到网站的应用
  9. 大厂真题泄漏:高频自动化测试面试题,看完面试成功率高达99%
  10. Panda3D设置游戏背景颜色和节点颜色、透明度