turbopack原生支持import css文件,无需style-loader、css-loader等配置,自动解析、编译、注入dom并支持hmr;但需通过import显式引入(不可放/public用link),且仅.module.css自动启用css modules,postcss/tailwind须预构建。

直接 import CSS 文件,无需 loader 配置
Turbopack 不需要像 Webpack 那样手动配置 style-loader、css-loader 或 postcss-loader。它原生支持 import './styles.css' 语法,并自动完成解析、编译、注入 DOM 和热更新 —— 只要文件被 JS 入口或组件显式引入,就进入构建链。
常见错误是把 CSS 放在 /public 目录下用 <link rel="stylesheet"> 引入,这完全绕过 Turbopack,热更新必然失效。
- ✅ 正确:在
app/layout.tsx或页面组件顶部写import '../styles/global.css' - ❌ 错误:在
public/放global.css,然后 HTML 中<link href="/global.css"> - ⚠️ 注意:
app/下的 CSS 必须通过import,不能靠文件系统隐式加载(比如同名page.tsx旁放page.module.css不会自动生效)
CSS Module 和全局样式必须显式区分
Turbopack 会根据文件后缀和导入方式决定是否启用模块化作用域。它不靠 css-loader 的 modules 选项,而是靠命名约定:
-
Button.module.css→ 自动启用 CSS Modules,类名被哈希化,导出对象如{ button: 'Button_button__abc123' } -
globals.css或index.css→ 默认为全局样式,无作用域隔离 - 不支持
.module.less或.module.sass—— 当前 Turbopack(v1.0+)只对.module.css做自动识别,其他预处理器需手动转译为 CSS 后再 import
如果你用了 @tailwindcss/jit 或自定义 PostCSS 插件,Turbopack 目前无法接入(它尚不支持插件系统),建议提前用 postcss-cli 构建好 CSS 再 import。
修改 CSS 后热更新卡顿?检查是否触发了全量重载
Turbopack 的热更新默认是局部的,但某些场景会退化为整页刷新:
- 修改的是被多个 layout 共享的根级
globals.css,且该文件被app/layout.tsximport → 通常仍为局部更新 - 修改的是
app/loading.tsx或app/error.tsx中 import 的 CSS → 可能触发边界重载(因这些组件属于 React Server Component 边界) - 使用了
use client组件中动态import()加载 CSS → Turbopack 尚不支持动态 CSS 导入的 HMR,会 fallback 到 full reload - 终端看到
[turbopack] rebuilding... (full)而非(incremental)→ 说明某处依赖图被标记为“不可缓存”,常见于使用了eval、new Function或未声明的全局变量
验证方式:删掉所有 use client 标记,纯服务端组件中 import CSS,再改保存 —— 如果恢复秒级更新,基本可定位是客户端组件干扰了增量缓存。
PostCSS 和 Tailwind 必须走预构建流程
Turbopack 当前(Next.js 16 + Turbopack stable)不支持运行时 PostCSS 处理,因此不能像 Vite 那样直接 import './index.css' 并指望它自动跑 autoprefixer 或 tailwindcss。
正确做法是把 Tailwind 编译结果作为静态资源引入:
- 运行
npx tailwindcss -i ./src/input.css -o ./dist/output.css --minify生成最终 CSS - 将
dist/output.css放入app/目录(如app/styles/tailwind.css) - 在
app/layout.tsx中import './styles/tailwind.css' - 开发时用
npm run build:tailwind -- --watch监听源文件变化并重写输出 CSS
这个环节最容易被忽略:开发者常以为 Turbopack “支持 CSS” 就等于“支持所有 CSS 工具链”,但它只处理标准语法和模块化,不接管构建时的转换逻辑。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











