news 2026/9/11 8:39:31

Umi + Mako 下 Unocss 构建后样式丢失?3 个检查点快速定位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Umi + Mako 下 Unocss 构建后样式丢失?3 个检查点快速定位

Umi + Mako 下 Unocss 构建后样式丢失?3 个检查点快速定位

【免费下载链接】umiA framework in react community ✨项目地址: https://gitcode.com/GitHub_Trending/um/umi

本地umi dev里原子类全部生效,umi build之后页面直接裸奔——Umi + Mako + Unocss 组合下的样式丢失,九成不是编译顺序的锅。动手之前先回答一个问题:src/.umi/uno.css到底生成了没有。

别急着怀疑编译顺序,先看 uno.css 卡在哪一步

官方插件的链路是这样的:onBeforeCompiler钩子里拉起 unocss CLI 子进程,按unocss.config.ts扫描源码,把原子类写进src/.umi/uno.css,再用addEntryImports把它挂到入口,Mako 随后才和页面其它 CSS 一起打包。build 会awaitCLI 跑完再继续编译,dev 下 CLI 常驻 watch。所以"打包跑在生成前面"不成立,真正会断的是中间那一下:配置缺失时 CLI 空跑,uno.css不落地,Mako 照常打包出一个空壳。逻辑在 packages/plugins/src/unocss.ts 里,很短。

补齐两处配置,让 dev 和 build 走同一条链路

要补的东西只有两处,都在你自己项目里。

项目根放unocss.config.ts——CLI 启动前会检查它,缺文件时插件只 warn 一句就失效:

import { defineConfig, presetUno } from 'unocss'; export default defineConfig({ envMode: process.env.NODE_ENV === 'production' ? 'build' : 'dev', presets: [presetUno()], });

为什么这样写:它是原子类扫描的唯一入口配置,envMode区分 dev / build 两套环境读取。

再在 Umi 配置里声明unocss这个 key,插件是EnableBy.config,key 不出现整个插件不注册:

// .umirc.ts export default { // …其余配置保持不变 unocss: { watch: ['src'], }, };

为什么这样写:watch里的目录会原样传给 CLI 参与扫描,声明 key 同时把插件真正挂上。依赖侧把unocss@unocss/cli装进项目,版本对照官方示例 examples/with-unocss/。

花 30 秒把三层验证跑一遍

开发态、生产态、产物文件,三层各验一次:

  • src/.umi/uno.css存在且非空,能搜到你写过的类名
  • umi build日志里没有"请在项目目录中添加 unocss.config.ts"这条 warn
  • 产物 CSS 里 grep 得到.items-center这类原子规则
  • 重装依赖后 dev 与 build 各跑一遍,表现一致

前三条分别对应生成、日志、产物,第四条防的是 watch 进程留下的假象。

这几个坑,会替你藏住问题

⚠️ dev 的 watch 会把问题藏起来:CLI 常驻进程一直补写uno.css,旧文件又留在src/.umi里——换台机器或重装node_modules后 build 产物立刻变空,dev 却还"正常"。别拿 dev 的表现给 build 背书。

IS_UMI_BUILD_WORKER也别碰:build 的 worker 进程里插件直接早退,生成只发生在主进程,自己改环境变量绕过只会让 CLI 一次都不跑。

stage 不是这个症状的旋钮:onBeforeCompiler在编译前阻塞等待,调整插件加载顺序改变不了 CLI 是否产出文件,"把 Unocss stage 调大"这种说法对空文件无效。

下次 build 完先 grep 一眼产物 CSS,再决定要不要怀疑构建工具。

【免费下载链接】umiA framework in react community ✨项目地址: https://gitcode.com/GitHub_Trending/um/umi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 8:37:52

Spring Boot端口占用问题全面解决方案

1. 项目概述 作为一名Java开发者,Spring Boot项目启动时遇到端口占用报错几乎是每个人都会踩的坑。最常见的就是那个让人头疼的提示:"Port 8080 was already in use"或者"Port 8081 was already in use"。这个问题看似简单&#xf…

作者头像 李华
网站建设 2026/9/11 8:36:58

阿里开源Agent项目AgentScope实战:从单智能体到多Agent协作

最近阿里开源了一个Agent项目,朋友圈里直接刷屏了。作为一个常年折腾大模型应用的人,我第一反应是:这又是啥新轮子?结果花了一个周末,从读文档到上手跑通多Agent协作,再回头看这个项目的设计,确…

作者头像 李华
网站建设 2026/9/11 8:36:46

3 步解决 Calico 镜像拉取超时:DaoCloud 镜像站前缀替换完整指南

3 步解决 Calico 镜像拉取超时:DaoCloud 镜像站前缀替换完整指南 【免费下载链接】public-image-mirror 很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。 项目地址: https://gitcode.com/Gi…

作者头像 李华
网站建设 2026/9/11 8:34:23

RK3588与RK3588S工业AI选型深度对比:场景驱动的芯片能力边界分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 8:32:19

ZLUDA 实战:把未修改的 CUDA 程序直接跑在 AMD GPU 上

ZLUDA 实战:把未修改的 CUDA 程序直接跑在 AMD GPU 上 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 用 CUDA 写好的程序只能在 N 卡上跑?ZLUDA 就是来解决这件事的:它是一…

作者头像 李华
网站建设 2026/9/11 8:31:54

电-气-热综合能源系统建模与MATLAB优化实现

1. 电-气-热综合能源系统概述电-气-热综合能源系统(Integrated Electricity-Gas-Heat Energy System, IEGHES)是现代能源互联网的核心组成部分。这种系统通过耦合电网、天然气网和区域供热网络,实现多种能源形式的协同优化与互补利用。在实际…

作者头像 李华