vue2 element 换肤,不引入css 排除element css

需求:

element换肤

实现:

1.build的时候不打包 element 的css

2.根据 配置不同 使用js引入 不同的element 主题css.

坑:

逻辑上很简单,但是坑就坑在 如何在打包的时候 不引入element css

网上的方案基本都尝试了 都无效

我的环境版本:

vue-cli@2.9.6 element-ui@2.15.12

D:\www\vue>npm ls
cesi@1.0.0 D:\www\vue
+-- @babel/preset-env@7.21.4
+-- autoprefixer@7.2.6
+-- axios@1.2.1
+-- babel-core@6.26.3
+-- babel-eslint@8.2.6
+-- babel-helper-vue-jsx-merge-props@2.0.3
+-- babel-jest@21.2.0
+-- babel-loader@7.1.5
+-- babel-plugin-component@1.1.1
+-- babel-plugin-dynamic-import-node@1.2.0
+-- babel-plugin-syntax-jsx@6.18.0
+-- babel-plugin-transform-es2015-modules-commonjs@6.26.2
+-- babel-plugin-transform-runtime@6.23.0
+-- babel-plugin-transform-vue-jsx@3.7.0
+-- babel-preset-env@1.7.0
+-- babel-preset-stage-2@6.24.1
+-- babel-register@6.26.0
+-- chalk@2.4.2
+-- chromedriver@2.46.0
+-- copy-webpack-plugin@4.6.0
+-- cross-spawn@5.1.0
+-- css-loader@0.28.11
+-- element-ui@2.15.12
+-- eslint-config-standard@10.2.1
+-- eslint-friendly-formatter@3.0.0
+-- eslint-loader@1.9.0
+-- eslint-plugin-import@2.26.0
+-- eslint-plugin-node@5.2.1
+-- eslint-plugin-promise@3.8.0
+-- eslint-plugin-standard@3.1.0
+-- eslint-plugin-vue@4.7.1
+-- eslint@4.19.1
+-- extract-text-webpack-plugin@3.0.2
+-- file-loader@1.1.11
+-- friendly-errors-webpack-plugin@1.7.0
+-- html-webpack-plugin@2.30.1
+-- jest-serializer-vue@0.3.0
+-- jest@22.4.4
+-- nightwatch@0.9.21
+-- node-notifier@5.4.5
+-- optimize-css-assets-webpack-plugin@3.2.1
+-- ora@1.4.0
+-- portfinder@1.0.32
+-- postcss-import@11.1.0
+-- postcss-loader@2.1.6
+-- postcss-url@7.3.2
+-- qrcodejs2@0.0.2
+-- rimraf@2.7.1
+-- selenium-server@3.141.59
+-- semver@5.7.1
+-- shelljs@0.7.8
+-- uglifyjs-webpack-plugin@1.3.0
+-- url-loader@0.5.9
+-- vue-axios@3.5.2
+-- vue-cli@2.9.6
+-- vue-fragment@1.6.0
+-- vue-jest@1.4.0
+-- vue-loader@13.7.3
+-- vue-router@3.6.5
+-- vue-smooth-dnd@0.8.1
+-- vue-style-loader@3.1.2
+-- vue-template-compiler@2.7.14
+-- vue@2.7.14
+-- vxe-table@3.6.11
+-- webpack-bundle-analyzer@2.13.1
+-- webpack-dev-server@2.11.5
+-- webpack-merge@4.2.2
+-- webpack@3.12.0
`-- xe-utils@3.5.7

无效方案1:

externals:{
   'vue': 'Vue',
//这里无论写成 'element': 'element-ui' 还是 'element-ui':'element' 都无效
   'element': 'element-ui', 
},

能够排除vue,不能排除 element.

无效方案2.

注释掉这行代码 build 后 仍然会打包element的css文件
//import 'element-ui/lib/theme-chalk/index.css'

element无论使用 全部加载 还是按需加载 情况都一样.

最终解决方案:

最终(几个月后),找到解决方案(原网址忘记了,翻遍了历史记录都没有找到)

(1)注释(不引入css) //import 'element-ui/lib/theme-chalk/index.css'

(2)修改 .babelrc

原来部分

"component",
 {
  "libraryName": "element-ui",
  "styleLibraryName": "theme-chalk"
}

改为 

"component",
{
    "libraryName": "element-ui",
    "style": false
}

这样build 就不会加载 element的css文件了

然后按照这个方案:

https://blog.csdn.net/LuckKing0925/article/details/121911587 

手动引入 element 的css,用js加载css,需要换肤的时候 全局替换css中的值.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值