如何关闭 vite 的 css import 功能?

现在浏览器已经支持 css 导入了

import style from './index.css' assert { type: 'css' };

// style 是样式表对象

document.adoptedStyleSheets = [style];

但是,如果 vite构建后,就会把css打包编译成字符串,而不再是样式表对象

本来是这样的,原生请求

image.png

vite 编译后就成字符串了

image.png

结果导致报错

image.png

目前通过下面这种方式暂时解决了

import style from './index.css' assert { type: 'css' };
if (style.type) {
    shadowRoot.adoptedStyleSheets = [ style ];
} else {
    const sheet = new CSSStyleSheet();
    sheet.replace(style)
    shadowRoot.adoptedStyleSheets = [ sheet ];
}

但是感觉对于原生来说有点浪费?或者说对于组件本身是多余的,仅仅是为了 vite 编译而解决的

阅读 2.5k
1 个回答

CSSstylesheet vite支持的还不太好,能找到的解决方式是使用

rollup-plugin-import-assert 这个插件可以把css 按CSSstyleSheet加载,但是在VITE里直接使用还是不行, 要把css文件后缀改一下。
具体看以下页面,翻到最后
https://github.com/vitejs/vit...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题