javascript - Tailwind CSS 类在初始构建 React 应用程序后未更新

标签 javascript css reactjs tailwind-css tailwind-3

我今天决定咬紧牙关,将我的 React 应用程序从 tailwind v2 升级到 v3。升级很顺利,但我现在遇到了一个问题,在我运行“npm start”后,在重新编译应用程序时,在开发中添加额外的 tailwind css 类不会被拾取,我知道这是 JIIT 引擎的工作。

我希望 tailwind 能够检测到变化并添加/删除所需的类。我尝试将基础类从“basis-1/2”更改为“basis-3/4”,但由于我没有在初始构建中包含类“basis-2/5”,类名出现在 div 之后热重载,但类未加载到样式表中。

我知道这是顺风特有的问题,因为我使用 chrome 工具进行了调查,并且类名已添加到 div,但该值不在重新编译的样式表中: target css class

我认为解决方案可能是在开发过程中包含所有 css 类,并在生产过程中清除它们一次,但通过研究,我认为顺风 css 包已经变得太大而无法在开发过程中完全加载。

我还尝试在 tailwind.config.js 文件的内容数组中匹配不同的文件路径,但这也没有帮助。

关于此的任何帮助或建议都非常实用,并且很乐意尝试人们的建议。

感兴趣的文件:

包.json

{
  "name": "personalreactapp",
  "version": "0.1.0",
  "private": true,
  "proxy": "http://localhost:5000/",
  "dependencies": {
    "@emotion/react": "^11.6.0",
    "@emotion/styled": "^11.6.0",
    "@headlessui/react": "^1.4.2",
    "@heroicons/react": "^1.0.5",
    "@mui/icons-material": "^5.1.1",
    "@mui/material": "^5.1.0",
    "@mui/styles": "^5.1.0",
    "@tailwindcss/forms": "^0.4.0",
    "@types/js-cookie": "^3.0.1",
    "axios": "^0.21.4",
    "formik": "^2.2.9",
    "highcharts": "^9.1.1",
    "highcharts-react-official": "^3.0.0",
    "history": "^5.2.0",
    "jquery": "^3.6.0",
    "js-cookie": "^3.0.1",
    "merge": "^1.2.1",
    "oidc-client": "^1.9.0",
    "query-string": "^7.1.1",
    "react": "^17.0.2",
    "react-dom": "^16.0.0",
    "react-hot-toast": "^2.2.0",
    "react-loader-spinner": "^4.0.0",
    "react-redux": "^7.2.6",
    "react-router": "^6.2.1",
    "react-router-bootstrap": "^0.25.0",
    "react-router-dom": "^6.0.2",
    "react-scripts": "5.0.0",
    "react-toastify": "^8.1.0",
    "reactstrap": "^8.4.1",
    "redux-devtools-extension": "^2.13.9",
    "redux-logger": "^3.0.6",
    "redux-persist": "^6.0.0",
    "redux-thunk": "^2.3.0",
    "reselect": "^4.1.2",
    "rimraf": "^2.6.2",
    "styled-components": "^4.3.2",
    "watch": "^1.0.2",
    "yup": "^0.32.11"
  },
  "devDependencies": {
    "@tailwindcss/postcss7-compat": "^2.2.17",
    "ajv": "^6.9.1",
    "autoprefixer": "^10.4.2",
    "babel-eslint": "^10.1.0",
    "cross-env": "^5.2.0",
    "eslint": "^6.8.0",
    "eslint-config-airbnb": "^19.0.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-config-react-app": "^5.2.0",
    "eslint-plugin-flowtype": "^4.6.0",
    "eslint-plugin-import": "^2.25.3",
    "eslint-plugin-jsx-a11y": "^6.2.3",
    "eslint-plugin-only-warn": "^1.0.3",
    "eslint-plugin-react": "^7.27.0",
    "nan": "^2.14.1",
    "postcss": "^8.4.6",
    "postcss-cli": "^9.0.2",
    "prettier": "^2.4.1",
    "pretty-quick": "^3.1.1",
    "tailwindcss": "^3.0.23",
    "typescript": "^3.9.10"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "scripts": {
    "start": "rimraf ./build && npm run watch:css && react-scripts start",
    "build": "npm run watch:css && react-scripts build",
    "build:css": "postcss src/assets/tailwind.css -o src/assets/main.css",
    "watch:css": "postcss src/assets/tailwind.css -o src/assets/main.css",
    "test": "cross-env CI=true react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "lint": "eslint ./src/ --max-warnings=0"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

tailwind.config.js

module.exports = {
  content: ['./src/**/*.{js,jsx,ts,tsx}', './src/**/**/*.{js,jsx,ts,tsx}'],
  theme: {
    extend: {},
  },
  plugins: [require('@tailwindcss/forms')],
};

索引.js

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router } from 'react-router-dom';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import { Provider } from 'react-redux';
import store from './redux/store';
import { history } from './_helpers/history';
import 'react-loader-spinner/dist/loader/css/react-spinner-loader.css';
import './assets/main.css';

const rootElement = document.getElementById('root');

ReactDOM.render(
  <Router history={history}>
    <Provider store={store}>
      <App />
    </Provider>
  </Router>,
  rootElement,
);

registerServiceWorker();

postcss.config

const tailwindcss = require('tailwindcss');
module.exports = {
  plugins: [tailwindcss('./src/tailwind.config.js'), require('autoprefixer')],
};

Assets /tailwind.css

@import 'tailwindcss/base';

@import 'tailwindcss/components';

@import 'tailwindcss/utilities';

最佳答案

在创建一个新的 React 应用程序并并排比较这些应用程序后,我发现了问题所在,如果有人遇到类似问题,我建议您也这样做。

当我使用 tailwind V2 时,我没有 tailwind 配置。升级到 V3 后,我运行了命令 npx tailwindcss init。问题是我在 src 文件夹中运行它,所以在上面的 tailwind 配置中,内容匹配路径将不起作用,因为它正在寻找 src 文件夹中已经存在的 src 文件夹。

感谢 EdLucas 在评论中指出的第二个问题是不再支持 postCSS 配置。即使进行了上述更改,如果存在 postCSS 文件,它也不会起作用。删除该文件将解决问题。

如果有人想知道上面 package.json 中 tailwindCSS、postCSS 和 autoprefixer 的版本是我在工作解决方案中使用的正确版本。

关于javascript - Tailwind CSS 类在初始构建 React 应用程序后未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71198811/

相关文章:

javascript - setInterval javascript - 如何调用函数

javascript - JS代码返回n次数组不起作用

javascript - 在 IE9+ 中使用 CSS3 动画

javascript - 无法运行服务器并在命令提示符中显示错误

javascript - 使用 jQuery load() 在 Div 内的页面上加载 Javascript

javascript - 如何取消关注不关注 Twitter 的 Twitter 关注者

html - DIV 位置?结盟

javascript - 使 Accordion/Collapsible 中的 DIV 固定在页面的顶部和底部

reactjs - Reactjs Hooks 中的递归函数?

javascript - 如何在 JSX 中为带有选择器的 const 设置默认变量