reactjs - 如何在任何.scss 文件中使用tailwind 的@apply 指令,而不是仅使用它的主tailwind 文件(在React 中)?
问题描述
我正在对 typescript 和 tailwindcss 做出反应。
我想要的是,我不想在主 tailwind.css 文件(包含 @tailwind 基础、@tailwind 组件等的文件)中使用@apply指令,而是想在任何 .scss 文件中使用它。
例如,每当我创建一个组件时,我都会创建一个文件夹,并在其中创建一个 index.tsx 文件和一个 .scss 文件。我想在那个 .scss 文件中使用 @apply 指令。这样,工作和调试将很容易,因为两个关联的文件都在同一个文件夹中。我怎样才能做到这一点?
我在下面展示了我的基本文件夹结构。
文件夹结构:
src > 组件 > Header > Header.tsx
import React from "react";
import styles from "./Header.module.scss";
interface Props {}
const Header: React.FC<Props> = (props) => {
return <div className={styles.headerTag}>Header part here</div>;
};
export default Header;
src > 组件 > 头文件 > Header.module.scss
// what to import so that I can use tailwind like this
.headerTag {
@apply text-8xl font-bold bg-gray-500;
}
解决方案
创建了一个带有工作解决方案的仓库。
如果您的项目基于create-react-app
以下步骤来实现。
为您的项目添加顺风
按照文档中的本指南添加tailwind
到您的项目中。注意:它们用于修改 CRA webpack 的配置,但我相信你可以对.craco
react-app-rewired
脚步:
npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
npm install @craco/craco
- 在您的 package.json 中进行这些更改
- 创建一个名为
craco.config.js
// craco.config.js
module.exports = {
style: {
postcss: {
plugins: [
require('tailwindcss'),
require('autoprefixer'),
],
},
},
}
@tailwind base;
@tailwind components;
@tailwind utilities;
添加 scss 模块支持
通过安装添加 scss 模块支持npm i node-sass@5.0.0
。您可以尝试其他版本,但更高版本对我不起作用。
而已
如果由于某种原因它仍然对您不起作用,请参阅版本/配置差异的存储库,以了解要更改什么来处理它。
如果您正在使用自定义 webpack 构建(或者您的项目不是基于 CRA),则可能需要更多步骤来使用taildwind
和scss-modules
.
为什么是 postcss@7?
https://tailwindcss.com/docs/installation#post-css-7-compatibility-build
从 v2.0 开始,Tailwind CSS 依赖于 PostCSS 8。由于 PostCSS 8 才几个月大,生态系统中的许多其他工具还没有更新,这意味着您在安装 Tailwind 后可能会在终端中看到这样的错误并尝试编译您的 CSS:
错误:PostCSS 插件 tailwindcss 需要 PostCSS 8。
Create React App 尚不支持 PostCSS 8,因此您现在需要安装 Tailwind CSS v2.0 PostCSS 7 兼容性版本,如上所示。
推荐阅读
- python - 为什么 'dict(Count(list)) 在 windows 的 python 中不起作用?
- firebase - 我可以在 Firebase 上管理多少个客户端应用?
- c# - 构造函数上的 WPF FileNotFoundException
- r - 是否可以在 R 的 cppFunction 中动态加载文件?
- dask - 找不到 Dask PicklingError 函数
- python - Selenium / asyncio - 使用 Executor 而不重新生成 webdriver
- sql-server - 如何在另一个 Tablix 中使用 Matrix 中的 Pivoted Column 值并在其上编写表达式
- git - 我应该如何清理由 `git update-ref` 创建的文件和目录?
- javascript - 按名称对 javascript 对象中的属性进行分组和提取
- python - 如何在 JSON 数组 python 中访问 JSON 对象?