element 更換主題

PS C:\workspace\mfront-mobile-app> et
PS C:\workspace\mfront-mobile-app>
- build element theme

events.js:183
      throw er; // Unhandled 'error' event
      ^
Error: node_modules\element-theme-chalk\src\radio.scss
Error: Undefined variable: "$--radio-checked-text-color".
        on line 138 of node_modules/element-theme-chalk/src/radio.scss, in mixin `@content`
        from line 168 of node_modules/element-theme-chalk/src/mixins/mixins.scss, in mixin `when`
        from line 127 of node_modules/element-theme-chalk/src/radio.scss, in mixin `@content`
        from line 97 of node_modules/element-theme-chalk/src/mixins/mixins.scss, in mixin `e`
        from line 87 of node_modules/element-theme-chalk/src/radio.scss, in mixin `@content`
        from line 74 of node_modules/element-theme-chalk/src/mixins/mixins.scss, in mixin `b`
        from line 6 of node_modules/element-theme-chalk/src/radio.scss
        from line 14 of node_modules/element-theme-chalk/src/index.scss
>>         color: $--radio-checked-text-color;

   ---------------^

    at Object.module.exports.renderSync (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\node-sass\lib\index.js:439:16)
    at DestroyableTransform._transform (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\gulp-sass\index.js:157:36)
    at DestroyableTransform.Transform._read (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:184:10)
    at DestroyableTransform.Transform._write (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:172:83)
    at doWrite (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:428:64)
    at writeOrBuffer (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:417:5)
    at DestroyableTransform.Writable.write (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:334:11)
    at write (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_readable.js:623:24)
    at flow (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_readable.js:632:7)
    at DestroyableTransform.pipeOnReadable (C:\Program Files\nodejs\node_global\node_modules\element-theme\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_readable.js:664:5)

碰到了奇葩事情,記錄一下审胚。竟然是同事在修改 element-variables.scss 代碼不小心刪除一行代碼,說(shuō)這句編譯錯(cuò)誤礼旅。


elementui.png

我的解決方案:
第一次.
刪除node-modules膳叨,重新編譯主題。結(jié)果還是報(bào)這個(gè)錯(cuò)誤
第二次
刪除 element-variables.scss 和 編譯后的 theme 文件夾痘系,重新安裝了一遍菲嘴,對(duì)比了前后element-variable.scss發(fā)現(xiàn)代碼不完整。

怎么更換element主題

Element 默認(rèn)提供一套主題汰翠,CSS 命名采用 BEM 的風(fēng)格龄坪,方便使用者覆蓋樣式。為了滿足我們面對(duì)各種各樣千奇百怪的需求复唤,官方提供了三種方法健田,可以進(jìn)行不同程度的樣式自定義。

僅替換主題色

在線主題生成工具

在項(xiàng)目中改變 SCSS 變量

新建一個(gè)樣式文件佛纫,例如 element-variables.scss妓局,寫(xiě)入以下內(nèi)容:

/* 改變主題色變量 */
$--color-primary: teal;

/* 改變 icon 字體路徑變量,必需 */
$--font-path: '~element-ui/lib/theme-chalk/fonts';

@import "~element-ui/packages/theme-chalk/src/index";

之后呈宇,在項(xiàng)目的入口文件中好爬,直接引入以上樣式文件即可(無(wú)需引入 Element 編譯好的 CSS 文件):

import Vue from 'vue'
import Element from 'element-ui'
import './element-variables.scss'

Vue.use(Element)

需要注意的是,覆蓋字體路徑變量是必需的甥啄,將其賦值為 Element 中 icon 圖標(biāo)所在的相對(duì)路徑即可存炮。

命令行主題工具

安裝工具

首先安裝「主題生成工具」,可以全局安裝或者安裝在當(dāng)前項(xiàng)目下,推薦安裝在項(xiàng)目里僵蛛,方便別人 clone 項(xiàng)目時(shí)能直接安裝依賴并啟動(dòng)尚蝌,這里以全局安裝做演示。

npm i element-theme -g

安裝白堊主題充尉,可以從 npm 安裝或者從 GitHub 拉取最新代碼飘言。

# 從 npm
npm i element-theme-chalk -D

# 從 GitHub
npm i https://github.com/ElementUI/theme-chalk -D

?初始化變量文件

主題生成工具安裝成功后,如果全局安裝可以在命令行里通過(guò) et 調(diào)用工具驼侠,如果安裝在當(dāng)前目錄下姿鸿,需要通過(guò) node_modules/.bin/et 訪問(wèn)到命令。執(zhí)行 -i 初始化變量文件倒源。默認(rèn)輸出到 element-variables.scss苛预,當(dāng)然你可以傳參數(shù)指定文件輸出目錄。

et -i [可以自定義變量文件]

> ? Generator variables file

如果使用默認(rèn)配置笋熬,執(zhí)行后當(dāng)前目錄會(huì)有一個(gè) element-variables.scss 文件热某。內(nèi)部包含了主題所用到的所有變量,它們使用 SCSS 的格式定義胳螟。大致結(jié)構(gòu)如下:

$--color-primary: #409EFF !default;
$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */
$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */
$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */
$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */

$--color-success: #67c23a !default;
$--color-warning: #e6a23c !default;
$--color-danger: #f56c6c !default;
$--color-info: #909399 !default;

...

?修改變量

直接編輯 element-variables.scss 文件昔馋,例如修改主題色為紅色。

$--color-primary: red;

?編譯主題

保存文件后糖耸,到命令行里執(zhí)行 et 編譯主題秘遏,如果你想啟用 watch 模式,實(shí)時(shí)編譯主題嘉竟,增加 -w 參數(shù)邦危;如果你在初始化時(shí)指定了自定義變量文件,則需要增加 -c 參數(shù)舍扰,并帶上你的變量文件名

et

> ? build theme font
> ? build element theme

?引入自定義主題

默認(rèn)情況下編譯的主題目錄是放在 ./theme 下倦蚪,你可以通過(guò) -o 參數(shù)指定打包目錄。像引入默認(rèn)主題一樣边苹,在代碼里直接引用 theme/index.css 文件即可审丘。

import '../theme/index.css'
import ElementUI from 'element-ui'
import Vue from 'vue'

Vue.use(ElementUI)

?搭配插件按需引入組件主題

如果是搭配 babel-plugin-component 一起使用,只需要修改 .babelrc 的配置勾给,指定 styleLibraryName 路徑為自定義主題相對(duì)于 .babelrc 的路徑,注意要加 ~锅知。

{
  "plugins": [["component", [
    {
      "libraryName": "element-ui",
      "styleLibraryName": "~theme"
    }
  ]]]
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末播急,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子售睹,更是在濱河造成了極大的恐慌桩警,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昌妹,死亡現(xiàn)場(chǎng)離奇詭異捶枢,居然都是意外死亡握截,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)烂叔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谨胞,“玉大人,你說(shuō)我怎么就攤上這事蒜鸡】枧” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵逢防,是天一觀的道長(zhǎng)叶沛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)忘朝,這世上最難降的妖魔是什么灰署? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮局嘁,結(jié)果婚禮上溉箕,老公的妹妹穿的比我還像新娘。我一直安慰自己导狡,他們只是感情好约巷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著旱捧,像睡著了一般独郎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枚赡,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天氓癌,我揣著相機(jī)與錄音,去河邊找鬼贫橙。 笑死贪婉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卢肃。 我是一名探鬼主播疲迂,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼莫湘!你這毒婦竟也來(lái)了尤蒿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤幅垮,失蹤者是張志新(化名)和其女友劉穎腰池,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡示弓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年讳侨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奏属。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跨跨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拍皮,到底是詐尸還是另有隱情歹叮,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布铆帽,位于F島的核電站咆耿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏爹橱。R本人自食惡果不足惜萨螺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愧驱。 院中可真熱鬧慰技,春花似錦、人聲如沸组砚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)糟红。三九已至艾帐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盆偿,已是汗流浹背柒爸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留事扭,地道東北人捎稚。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像求橄,于是被迫代替她去往敵國(guó)和親今野。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • element-ui 自定義主題工具 一罐农、安裝elementUI及sass-loader,node-sass //...
    頁(yè)面仔小楊閱讀 6,745評(píng)論 0 0
  • 一腥泥、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,745評(píng)論 0 10
  • 應(yīng)產(chǎn)品的要求,做人生中的第一次換膚項(xiàng)目啃匿,在沒(méi)做之前,確實(shí)覺(jué)得挺沒(méi)有頭緒的,所以就只能借助于百度啊溯乒,然后發(fā)現(xiàn)其實(shí)el...
    北暖37閱讀 3,914評(píng)論 1 0
  • 官方自定義主題指南:theming guide 一夹厌、官方指南說(shuō)明: 典型樣例:在src目錄下新建material-...
    琢磨先生lf閱讀 2,757評(píng)論 0 1
  • 安裝工具 可以全局安裝或者安裝在當(dāng)前項(xiàng)目下,推薦安裝在項(xiàng)目里裆悄,方便別人 clone 項(xiàng)目時(shí)能直接安裝依賴并啟動(dòng)矛纹,這...
    A豆_b99d閱讀 1,780評(píng)論 0 0