@winner-fed/plugin-unocss
Version:
适配 WinJS 的 UnoCSS 插件,提供原子化 CSS 的即时按需生成能力。
51 lines (50 loc) • 1.98 kB
JavaScript
import { existsSync } from "node:fs";
import { join } from "node:path";
import postcss from "@unocss/postcss";
import webpack from "@unocss/webpack";
const src = (api)=>{
api.describe({
key: 'unocss',
config: {
schema ({ zod }) {
return zod.object({
watch: zod.optional(zod.array(zod.any()))
});
}
},
enableBy: api.EnableBy.config
});
api.onBeforeCompiler(async ()=>{
var _api_userConfig_unocss, _api_userConfig;
if (process.env.IS_WIN_BUILD_WORKER) return;
if (null == (_api_userConfig = api.userConfig) ? void 0 : null == (_api_userConfig_unocss = _api_userConfig.unocss) ? void 0 : _api_userConfig_unocss.watch) api.logger.warn("unocss?.watch \u914D\u7F6E\u4E0D\u518D\u9700\u8981\u3002");
if (existsSync(join(api.paths.cwd, 'unocss.config.ts'))) api.logger.warn("\u8BF7\u4FEE\u6539 unocss \u7684\u63A5\u5165\u65B9\u5F0F\uFF0C\u4E3B\u8981\u662F\u5C06 unocss.config.ts \u4FEE\u6539\u4E3A uno.config.ts\uFF01\u79FB\u9664 @unocss/cli\u3002");
});
if (api.userConfig.rsbuild || api.userConfig.vite) api.modifyConfig((memo)=>{
memo.extraPostCSSPlugins ??= [];
memo.extraPostCSSPlugins.push(postcss());
return memo;
});
else {
api.modifyConfig((memo)=>{
memo.alias['uno.css'] = '/__uno.css';
return memo;
});
api.chainWebpack(async (memo)=>{
memo.plugin('uno-css').use(webpack);
memo.optimization.realContentHash(true);
memo.module.rule('vue').uses.delete('cache-loader');
memo.module.rule('tsx').uses.delete('cache-loader');
memo.merge({
cache: false
});
return memo;
});
api.addEntryImports(()=>[
{
source: 'uno.css'
}
]);
}
};
export { src as default };