使用 Sprinkles 构建您自己的类型安全版本的 Tailwind CSS

本文介绍如何使用vanilla-extract的Sprinkles API构建类型安全、实用优先的CSS框架,实现类似TailwindCSS的功能但具备更多自定义选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


张世民跟随创客、开发人员、函数式语言和怪诞字体的粉丝。

# 使用 Sprinkles 构建您自己的类型安全版本的 Tailwind CSS

## 

2022 年 7 月 15 日 6 分钟阅读 

我是 CSS 库vanilla-extract的忠实粉丝;在我看来,它是自 Tailwind CSS 以来最令人兴奋的 CSS 工具。如果您是vanilla-extract的新手,它是由 Mark Dalgleish 创建的 CSS-in-JS 库,可让您利用 TypeScript 的强大功能来编写 CSS。

我对 vanilla-extract 的杀手级功能Sprinkles API感到特别兴奋。Sprinkles 允许您根据首要原则创建完全定制的设计系统。您可以使用 Sprinkles 创建自己的原子、实用程序优先的 CSS 框架,而不是使用现成的库,例如Tailwind 和 Tachyon。

在本教程中,我们将设置一个新的 Next.js 应用程序并使用 vanilla-extract 的 Sprinkles API 创建一个自定义的、实用程序优先的 CSS 框架,称为 Sprinkles Tailwind。然后,我们将使用我们的新框架在 Tailwind CSS 主页上重新创建产品卡片演示。在此过程中,我们将看到 vanilla-extract 和 Sprinkles 如何处理伪类、响应式设计和暗模式主题。

- 为什么要使用洒水器?
- Next.js 和 vanilla-extract 入门
- 使用 Sprinkles 创建设计系统
- 将我们的 Sprinkles 库与 Tailwind CSS 进行比较
- 实施主题和响应式设计
- 添加深色主题

那么,当我们可以简单地使用 Tailwind 时,我们为什么要开发我们自己的基于 Sprinkles、实用程序优先的 CSS 库,它已经是一个如此流行的工具?三个原因:类型安全、自定义和本地范围。

首先,使用 Sprinkles,您可以获得与使用任何其他 Typescript 变量相同的类型提示和编译时验证,不再需要文档验证和类名拼写错误。

其次,Tailwind 既固执己见,也有一点学习曲线,尤其是在您不使用 Tailwind 预设语法的情况下。使用 Sprinkles,您正在编写 CSS 而不是 Tailwind 的速记类名。由于 Sprinkles 不以任何内置值开头,因此您可以按照自己喜欢的方式创建 CSS 框架。

最后,还有局部范围。vanilla-extract 在底层使用 CSS 模块的好处之一是,您的所有实用程序类现在默认情况下都是组件范围的。这意味着您可以轻松地将多个设计系统整合到单个应用程序中,而不必担心样式冲突。

## Next.js 和 vanilla-extract 入门

让我们首先创建一个新的 Next 应用程序并安装 vanilla-extract。您可以在此处的 GitHub 存储库中查看此演示项目的完整源代码。

首先创建一个新的 TypeScript 版本的 Next,如下所示:

------

超过 20 万开发人员使用 LogRocket 来创造更好的数字体验了解更多 →

------

```typescript
npx create-next-app@latest --typescript 洒-tailwind
```

运行yarn dev以确保我们的安装按预期工作后,我们将安装 vanilla-extract 和 Sprinkles:

```shell
纱线添加 @vanilla-extract/css @vanilla-extract/babel-plugin @vanilla-extract/next-plugin @vanilla-extract/sprinkles
```

接下来,通过更新以下内容,在我们的 webpack 构建过程中包含 vanilla-extract/next-plugin next.config.js:

```js
常量 {
  createVanillaExtractPlugin
} = require('@vanilla-extract/next-plugin');
const withVanillaExtract = createVanillaExtractPlugin();

/** @type {import('next').NextConfig} */
常量 nextConfig = {
  reactStrictMode:真,
};

module.exports = withVanillaExtract(nextConfig);
```

最后,因为我们希望我们的新 Sprinkles 类型被 TypeScript 编译器和我们的 IDE 的 TypeScript 服务器拾取,我们将添加*.css.ts到我们的项目中tsconfig.json:

```json
{
    ...
    "include": ["next-env.d.ts", "**/*.ts", "**/*.css.ts", "**/*.tsx"],
    ...
}
```

## 使用 Sprinkles 创建设计系统

Tailwind CSS 的主要卖点之一是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如意号。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值