背景:vue-cli 创建的项目, Element UI 作为 UI 组件库,采用组件按需引入的方式并使用了在项目中改变 SCSS 变量 的方式定义主题。但是项目打包后,却出现两份样式文件,一份在 app.css
、一份在 chunk-vendors.css
中。app.css
中是全量引入的且样式不同于组件的默认样式,chunk-vendors.css
中是按需引入的且样式是组件的默认样式。
重度依赖推荐使用 NO.1 ,轻度依赖推荐使用 NO.2
目的为不打包 Element UI 组件库
{ presets: [['es2015', { modules: false }]], plugins: [ [ 'component', { libraryName: 'element-ui', // styleLibraryName: 'theme-chalk', // 删除此行 style: false, // 添加此行 } ] ] }
Element 的 theme-chalk 使用 SCSS 编写,如果你的项目也使用了 SCSS,那么可以直接在项目中改变 Element 的样式变量。新建一个样式文件,例如 element-variables.scss
,写入以下内容:
/* 改变主题色变量 */ $--color-primary: teal; /* 改变 icon 字体路径变量,必需 */ $--font-path: '~element-ui/lib/theme-chalk/fonts'; @import "~element-ui/packages/theme-chalk/src/index";
之后,在项目的入口文件中,直接引入以上样式文件即可(无需引入 Element 编译好的 CSS 文件):
import Vue from 'vue' import Element from 'element-ui' import './element-variables.scss' Vue.use(Element)
/* src/asseets/element-var.scss */ $--color-primary: teal; /* 改变 icon 字体路径变量,必需 */ $--font-path: '~element-ui/lib/theme-chalk/fonts'; @import "~element-ui/packages/theme-chalk/src/index"; /* src/asseets/element-theme.scss */ @import "~element-ui/packages/theme-chalk/src/input.scss"; @import "~element-ui/packages/theme-chalk/src/radio.scss"; // @import "~element-ui/packages/theme-chalk/src/checkbox.scss"; ...
<style lang="scss"> @import '@/assets/css/element-var.scss'; @import '@/assets/css/element-theme.scss'; </style>
Element UI 2.12.0
所有样式的引用
@import "~element-ui/packages/theme-chalk/src/pagination.scss"; @import "~element-ui/packages/theme-chalk/src/dialog.scss"; @import "~element-ui/packages/theme-chalk/src/autocomplete.scss"; @import "~element-ui/packages/theme-chalk/src/dropdown.scss"; @import "~element-ui/packages/theme-chalk/src/dropdown-menu.scss"; @import "~element-ui/packages/theme-chalk/src/dropdown-item.scss"; @import "~element-ui/packages/theme-chalk/src/menu.scss"; @import "~element-ui/packages/theme-chalk/src/submenu.scss"; @import "~element-ui/packages/theme-chalk/src/menu-item.scss"; @import "~element-ui/packages/theme-chalk/src/menu-item-group.scss"; @import "~element-ui/packages/theme-chalk/src/input.scss"; @import "~element-ui/packages/theme-chalk/src/input-number.scss"; @import "~element-ui/packages/theme-chalk/src/radio.scss"; @import "~element-ui/packages/theme-chalk/src/radio-group.scss"; @import "~element-ui/packages/theme-chalk/src/radio-button.scss"; @import "~element-ui/packages/theme-chalk/src/checkbox.scss"; @import "~element-ui/packages/theme-chalk/src/checkbox-button.scss"; @import "~element-ui/packages/theme-chalk/src/checkbox-group.scss"; @import "~element-ui/packages/theme-chalk/src/switch.scss"; @import "~element-ui/packages/theme-chalk/src/select.scss"; @import "~element-ui/packages/theme-chalk/src/button.scss"; @import "~element-ui/packages/theme-chalk/src/button-group.scss"; @import "~element-ui/packages/theme-chalk/src/table.scss"; @import "~element-ui/packages/theme-chalk/src/table-column.scss"; @import "~element-ui/packages/theme-chalk/src/date-picker.scss"; @import "~element-ui/packages/theme-chalk/src/time-select.scss"; @import "~element-ui/packages/theme-chalk/src/time-picker.scss"; @import "~element-ui/packages/theme-chalk/src/popover.scss"; @import "~element-ui/packages/theme-chalk/src/tooltip.scss"; @import "~element-ui/packages/theme-chalk/src/message-box.scss"; @import "~element-ui/packages/theme-chalk/src/breadcrumb.scss"; @import "~element-ui/packages/theme-chalk/src/breadcrumb-item.scss"; @import "~element-ui/packages/theme-chalk/src/form.scss"; @import "~element-ui/packages/theme-chalk/src/form-item.scss"; @import "~element-ui/packages/theme-chalk/src/tabs.scss"; @import "~element-ui/packages/theme-chalk/src/tab-pane.scss"; @import "~element-ui/packages/theme-chalk/src/tag.scss"; @import "~element-ui/packages/theme-chalk/src/tree.scss"; @import "~element-ui/packages/theme-chalk/src/alert.scss"; @import "~element-ui/packages/theme-chalk/src/notification.scss"; @import "~element-ui/packages/theme-chalk/src/slider.scss"; @import "~element-ui/packages/theme-chalk/src/loading.scss"; @import "~element-ui/packages/theme-chalk/src/row.scss"; @import "~element-ui/packages/theme-chalk/src/col.scss"; @import "~element-ui/packages/theme-chalk/src/upload.scss"; @import "~element-ui/packages/theme-chalk/src/progress.scss"; @import "~element-ui/packages/theme-chalk/src/spinner.scss"; @import "~element-ui/packages/theme-chalk/src/message.scss"; @import "~element-ui/packages/theme-chalk/src/badge.scss"; @import "~element-ui/packages/theme-chalk/src/card.scss"; @import "~element-ui/packages/theme-chalk/src/rate.scss"; @import "~element-ui/packages/theme-chalk/src/steps.scss"; @import "~element-ui/packages/theme-chalk/src/step.scss"; @import "~element-ui/packages/theme-chalk/src/carousel.scss"; @import "~element-ui/packages/theme-chalk/src/scrollbar.scss"; @import "~element-ui/packages/theme-chalk/src/carousel-item.scss"; @import "~element-ui/packages/theme-chalk/src/collapse.scss"; @import "~element-ui/packages/theme-chalk/src/collapse-item.scss"; @import "~element-ui/packages/theme-chalk/src/cascader.scss"; @import "~element-ui/packages/theme-chalk/src/color-picker.scss"; @import "~element-ui/packages/theme-chalk/src/transfer.scss"; @import "~element-ui/packages/theme-chalk/src/container.scss"; @import "~element-ui/packages/theme-chalk/src/header.scss"; @import "~element-ui/packages/theme-chalk/src/aside.scss"; @import "~element-ui/packages/theme-chalk/src/main.scss"; @import "~element-ui/packages/theme-chalk/src/footer.scss"; @import "~element-ui/packages/theme-chalk/src/timeline.scss"; @import "~element-ui/packages/theme-chalk/src/timeline-item.scss"; @import "~element-ui/packages/theme-chalk/src/link.scss"; @import "~element-ui/packages/theme-chalk/src/divider.scss"; @import "~element-ui/packages/theme-chalk/src/image.scss"; @import "~element-ui/packages/theme-chalk/src/calendar.scss"; @import "~element-ui/packages/theme-chalk/src/backtop.scss"; @import "~element-ui/packages/theme-chalk/src/infinite-scroll.scss"; @import "~element-ui/packages/theme-chalk/src/page-header.scss"; @import "~element-ui/packages/theme-chalk/src/cascader-panel.scss"; @import "~element-ui/packages/theme-chalk/src/avatar.scss"; @import "~element-ui/packages/theme-chalk/src/drawer.scss"; @import "~element-ui/packages/theme-chalk/src/popconfirm.scss";
1、https://github.com/ElemeFE/el...
如有侵权请告知