12 个版本 (重大更改)
0.17.0 | 2023年6月9日 |
---|---|
0.15.0 | 2023年2月20日 |
0.12.0 | 2022年12月27日 |
0.9.0 | 2022年11月5日 |
#13 in #vite
每月79次下载
在 stailwc 中使用
145KB
3.5K SLoC
stailwc (快速的 Tailwind 编译器)
这是一个实验性的 SWC 编译器,旨在将编译时 Tailwind 宏带到 SWC(和 nextjs)中,类似于 twin macro。目标是提供与基于 babel 的替代方案相当的优秀编译时 ergonomics 和灵活性,同时性能显著优于后者。支持 emotion
和 styled-components
两种 CSS-in-JS,以及许多构建系统,如 SWC、nextjs、Vite 等。
兼容性图表
我们目前正在测试以下版本。这些版本之外的其他版本可能仍然可用。
stailwc | NextJS | Emotion | Styled Components | swc | Vite |
---|---|---|---|---|---|
最新版本 | 13.4.3 | 11.10.5 | 5.3.6 | 1.3.24 | 4.1.0 |
功能图表
功能 | Emotion | Styled Components |
---|---|---|
tw JSX 属性 |
✅ | ✅ |
tw 模板标签 |
✅ | ✅ |
tw 组件语法 |
✅ | ✅ |
tw 组件扩展语法 |
✅ | ✅ |
全局样式 | ✅ | ✅ |
插件参数建议 | ✅ | ✅ |
入门指南
> npm add -D stailwc
> yarn add -D stailwc
> pnpm add -D stailwc
要开始使用 NextJS,请在您的 next.config.js 中放置以下内容。有关其他框架/工具,请参阅示例。
next.config.js
const stailwc = require("stailwc/install");
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
experimental: {
swcPlugins: [
stailwc({
engine: "emotion", // or "styled-components"
}),
],
},
compiler: {
emotion: true,
// or
styledComponents: true,
},
};
module.exports = nextConfig;
可选,您还可以通过包含 <TailwindStyle />
组件来包含 Tailwind 标准化器 + 表单插件。请参阅相关示例。
_document.tsx
import { TailwindStyle } from "stailwc";
export default function App({ Component, pageProps }) {
return (
<>
<TailwindStyle />
<Component {...pageProps} />
</>
);
}
类型
要使类型正常工作,您需要执行以下步骤。您需要将 stailwc.d.ts
添加到源文件夹的根目录。
使用方法
tw
标签
您可以通过两种方式与 stailwc 交互。第一种是通过 tw
JS 属性,第二种是通过 tw
模板标签。
import { useState } from "react";
export const ColorButton = () => {
const [clicked, setClicked] = useState(0);
return (
<button
tw="p-1 m-4 text-green bg-white hover:(bg-gray text-yellow md:text-red) border-3"
css={clicked % 2 == 0 ? tw`border-green` : tw`border-blue`}
onClick={() => setClicked(clicked + 1)}
>
Clicked {clicked} times
</button>
);
};
组件语法
您还可以使用 tw
模板标签创建具有样式的组件。这将自动为 emotion
和 styled-components
创建正确的语法。
export const StyledButton = tw.button`p-1 m-4 text-green bg-white hover:(bg-gray text-yellow md:text-red) border-3`;
export const ShadowButton = tw(StyledButton)`shadow-lg`;
示例
提供了 emotion
和 styled-components
的示例。您可以通过克隆存储库并在示例目录中运行 yarn
后跟 yarn dev
来运行它们。您需要先 stailwc
。
依赖项
~6–13MB
~178K SLoC