11 个版本 (重大更改)

0.16.0 2023 年 5 月 22 日
0.15.0 2023 年 2 月 20 日
0.14.0 2023 年 1 月 25 日
0.12.0 2022 年 12 月 27 日
0.9.0 2022 年 11 月 5 日

#3 in #nextjs


用于 2 个 crate (通过 tailwind-parse)

MIT/Apache

11KB
274

stailwc (快速 Tailwind 编译器)

这是一个实验性的 SWC 编译器,旨在将编译时 Tailwind 宏带到 SWC (和 nextjs) 中,类似于 twin 宏。目标是提供与基于 babel 的替代方案相当的良好编译时 ergonomics 和灵活性,同时性能显著优于。支持 emotionstyled-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 JSW 属性,第二种是通过 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 模板标签创建样式化组件。这将自动为 emotionstyled-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`;

示例

提供了 emotionstyled-components 的示例。您可以通过克隆仓库并在示例目录中运行 yarn 然后运行 yarn dev 来运行它们。您需要先运行 stailwc

依赖项

~4-11MB
~130K SLoC