Skip to content

packages/cli 生成的临时 app 是 Tailwind 3 全套(CSS 指令/postcss 插件键/config 文件),而仓内是 v4 且 components peer 写 ^4.2.1 —— 仓内 objectui dev 的 CSS 管线今天就是死的 #3852

Description

@yinlianghui

越界发现,记录于 #3827(cli 生成产物清单锚定)实施期间。#3827 的文件面是生成清单的版本区间与声明面;这一条要改的是生成的 CSS 产物本身(三个文件的内容),是功能改写而非区间锚定,因此不在那个 PR 里做。

#3780 同族(Tailwind 3 化石),但文件面不同:#3780packages/components README 的 §Setup 文档,这一条是 packages/cli 生成到临时目录里的真实产物 + commands/dev.ts 的编程式 postcss 配置。

事实(对 origin/main @ 844d17fc9 实测)

packages/cli/src/utils/app-generator.ts 两个生成器写出的样式面,整套是 v3:

生成物 内容 仓内现状
src/index.css @tailwind base; @tailwind components; @tailwind utilities; + @layer base { :root { --background: ... } } v4 是 @import "tailwindcss"; + @theme
postcss.config.js plugins: { tailwindcss: {}, autoprefixer: {} } 仓内 6 个 postcss.config.* 全部写 '@tailwindcss/postcss': {}(12 个 manifest 声明该包 ^4.3.3)
tailwind.config.js v3 config,content globs v4 CSS-first,@source;#3780 记录了全仓没有这个文件
清单 devDependencies.tailwindcss ^3.4.19 仓根 ^4.3.3

两处硬证据:

  1. peer 冲突,不只是落后。 packages/components/package.jsonpeerDependencies.tailwindcss^4.2.1,而生成 app 依赖 @object-ui/components 又声明 tailwindcss ^3.4.19packages/cli 的 createTempAppWithRouting 生成的 app import 了未声明的 lucide-react,且其工具链区间落后仓内一到三个 major #3827 修掉 @object-ui/* ^0.1.0 之后 @object-ui/components@17 变成真能解析的,于是这条 peer 冲突就从"够不到"变成 npm install 的 ERESOLVE —— 也就是说仓外一次干净安装现在卡在这里。

  2. 仓内今天就不出样式。 commands/dev.ts(monorepo 分支)删掉生成的 postcss.config.js,改成编程式配置:

    const tailwindcss = require('tailwindcss');
    viteConfig.css = { postcss: { plugins: [ tailwindcss(join(tmpDir, 'tailwind.config.js')), autoprefixer() ] } };
    

    在仓内 hoist 到的 tailwindcss 是 4.3.3,把它当 postcss 插件直接调用会抛:

    $ node -e "require('tailwindcss')('/tmp/tailwind.config.js')"   # 从 packages/components 解析
    It looks like you're trying to use `tailwindcss` directly as a PostCSS plugin.
    The PostCSS plugin has moved to a separate package, so to continue using
    Tailwind CSS with PostCSS you'll need to install `@tailwindcss/postcss` ...
    

    这个调用被 try { ... } catch (_e) { console.warn('Failed to load PostCSS plugins from root node_modules. Styles might not work correctly.') } 包住,所以不是红,是一行警告后静默无样式serve.ts / build.ts 连这段编程式配置都没有,走的是生成的 v3 postcss.config.js,在 v4 下同样抛。

影响

  • 仓内 objectui dev 起的临时 app:样式管线死掉,只有一行 warn。属于用户可见的具体缺陷,不是 dormant。
  • 仓外:v3 三件套彼此自洽,但与 @object-ui/components 的 v4 peer 冲突(见证据 1)。

为什么不能顺手 bump 区间

只把 tailwindcss ^3.4.19 抬到 ^4.3.3 会得到一个"装得上、渲染不出样式"的 app —— 比现在更糟,因为它看起来像修好了。要一起改的是:index.css 换 v4 CSS-first 写法、postcss.config.js@tailwindcss/postcsstailwind.config.jscontent globs(含 monorepo 分支拼的两条绝对路径 glob)迁到 @source。是功能改写,应当在浏览器里验一遍出样式(dogfood),不适合跟着区间锚定的 PR 走。

#3827 的 PR 因此把这三个键钉成显式 deferred(TAILWIND_V3_DEFERRED,测试断言它只含 tailwindcss、生成 CSS 仍是 v3 指令、并断言 components 的 peer 是 ^4.2.1),指向本单;不是漏掉,是记账。

严重度不预设:"仓内 dev 无样式"偏具体缺陷,"仓外冲突"要等 #3827 落地才显形。留给 triage 定级。


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions