lisonge / vite-plugin-monkey

A vite plugin server and build your.user.js for userscript engine like Tampermonkey, Violentmonkey, Greasemonkey, ScriptCat
MIT License
1.35k stars 71 forks source link

打包后,css会被放在最上面...如果想条件运行脚本怎么做呢? #148

Closed zyronon closed 5 months ago

zyronon commented 5 months ago

image

我的代码大概是这样的,会判断是不是v站pc端,是才运行脚本

打包后是这样

image

css被放在最上面了

lisonge commented 5 months ago

你可以使用 inline css 内联导入,可以保证 dev/build 的一致体验,unocss 目前不支持这样做

import cssText from './style.css?inline'; // or './style.scss?inline'
const style = document.createElement('style');
style.textContent = cssText;
style.dataset.v = 'style_css';
if (import.meta.hot) {
  import.meta.hot.accept('./style.css?inline', (newModule) => {
    style.textContent = newModule?.default || '';
  });
}
if (document.nodeName) { // your custom case
  document.head.append(style);
}

另一种方法是自定义 monkeyConfig.build.cssSideEffects 这种方式可以控制最终的 css 注入代码,但是会造成 dev/build 模式不一致