背景:vue-cli 建立的項目, Element UI 做爲 UI 組件庫,採用組件按需引入的方式並使用了在項目中改變 SCSS 變量 的方式定義主題。可是項目打包後,卻出現兩份樣式文件,一份在 app.css
、一份在 chunk-vendors.css
中。app.css
中是全量引入的且樣式不一樣於組件的默認樣式,chunk-vendors.css
中是按需引入的且樣式是組件的默認樣式。css
重度依賴推薦使用 NO.1 ,輕度依賴推薦使用 NO.2
目的爲不打包 Element UI 組件庫vue
{ presets: [['es2015', { modules: false }]], plugins: [ [ 'component', { libraryName: 'element-ui', // styleLibraryName: 'theme-chalk', // 刪除此行 style: false, // 添加此行 } ] ] }
Element 的 theme-chalk 使用 SCSS 編寫,若是你的項目也使用了 SCSS,那麼能夠直接在項目中改變 Element 的樣式變量。新建一個樣式文件,例如 element-variables.scss
,寫入如下內容:git
/* 改變主題色變量 */ $--color-primary: teal; /* 改變 icon 字體路徑變量,必需 */ $--font-path: '~element-ui/lib/theme-chalk/fonts'; @import "~element-ui/packages/theme-chalk/src/index";
以後,在項目的入口文件中,直接引入以上樣式文件便可(無需引入 Element 編譯好的 CSS 文件):github
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
全部樣式的引用vue-cli
@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";
一、https://github.com/ElemeFE/el...element-ui
若有侵權請告知sass