【问题标题】:Tailwind CSS styling not being applied on deploy部署时未应用 Tailwind CSS 样式
【发布时间】:2020-06-17 02:42:42
【问题描述】:

这是我第一次使用 Tailwind CSS 来设置我的 React 应用程序的样式。当我在本地运行应用程序时,它的样式完美,但是,现在我已经使用gh-pages 部署了它,没有应用样式。我需要对我的 package.json 文件进行更改吗?

Link to the live site

{
  "name": "seafaring",
  "version": "0.1.0",
  "private": true,
  "homepage": "https://superhackerboy.github.io/sweet-seafaring-dreams/",
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "axios": "^0.19.2",
    "gh-pages": "^2.2.0",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-scripts": "3.4.0"
  },
  "scripts": {
    "build:css": "postcss src/styles/tailwind.css -o src/styles/index.css",
    "watch:css": "postcss src/styles/tailwind.css -o src/styles/index.css --watch",
    "start": "cross-env NODE_ENV=development concurrently \"npm run watch:css\" \"react-scripts start\"",
    "build": "cross-env NODE_ENV=production concurrently \"npm run build:css\" \"react-scripts build\"",
    "test": "react-scripts test",
    "predeploy": "npm run build",
    "deploy": "gh-pages -d build",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@fullhuman/postcss-purgecss": "^2.1.0",
    "autoprefixer": "^9.7.4",
    "concurrently": "^5.1.0",
    "cross-env": "^7.0.0",
    "cssnano": "^4.1.10",
    "postcss-cli": "^7.1.0",
    "purgecss": "^2.1.0",
    "tailwindcss": "^1.2.0"
  }
}

【问题讨论】:

  • 你找到解决办法了吗?
  • @DoryDaniel 我没有。我最终只使用了他们的 CDN。
  • 你在使用打字稿吗?如果是,则必须将其包含在 'tailwind.confing.js' 文件中

标签: css deployment github-pages tailwind-css


【解决方案1】:

虽然 Fred 当前的最佳答案是一个可行的解决方案。我在 Tailwind 文档中找到了更好的解决方案。

您可以在tailwind.config.js 中指定一个安全列表,此安全列表中指定的类将永远不会被清除。

// tailwind.config.js
module.exports = {
  purge: {
    content: ['./src/**/*.html'],
    safelist: [
      'bg-blue-500',
      'text-center',
      'hover:opacity-100',
      // ...
      'lg:text-right',
    ]
  },
  // ...
}

更多信息:https://tailwindcss.com/docs/optimizing-for-production#safelisting-specific-classes

【讨论】:

  • 谢谢。这是问题的正确答案。
【解决方案2】:

出现此问题是因为 purge-css 删除不使用样式。 您可以通过向该组件中的 div 元素添加您想要的颜色并隐藏该组件来防止这种情况发生。

示例:

            <div className="hidden bg-success bg-info bg-danger bg-warning"></div>

这将解决您的问题。

【讨论】:

    【解决方案3】:

    Tailwind 类需要是可清除的,如其文档中所述:https://tailwindcss.com/docs/optimizing-for-production#writing-purgeable-html。如果您将类名与 w-${sidebarWidth} 等变量连接起来,它们会在构建时被剥离并丢失。

    您需要改变构建动态名称的方法。这就是我所做的,这对我来说比必须维护另一个答案所建议的评论列表更有意义:

    1. 将要在类名中使用的任何变量存储为 Tailwind 文档中描述的确切值。一个例子可能是:
    // lib/tw.js
    export const HEADER_HEIGHT_CLASS = "h-16";
    
    1. 编写一个小辅助函数来帮助构建类
    // classnames.js
    export default function merge(...args) {
      return args.join(" ");
    }
    
    1. 当您需要使用动态类名时,将它们放在一起
    import cx from "lib/classnames";
    import { HEADER_HEIGHT_CLASS } from "lib/tw";
    
    ...
    <header className={cx("bg-white", HEADER_HEIGHT_CLASS)}>
      ...
    </header>
    ...
    

    这可确保字符串 h-16 存在于某处,因此将在部署时被捕获为包含的类。

    这个疏忽让我非常头疼,因为我花了几天时间在本地使用一种我认为合理的方法,结果发现部署时一切都损坏了。一旦你了解了它存在的原因,该功能本身就非常有意义,但是,我希望 Tailwind 能在其文档的早期部分更接近地发出某种警告。

    【讨论】:

      【解决方案4】:

      我也遇到过类似的问题。

      就我而言,我使用的是动态设置的颜色类,例如 className=text-${color}-500

      这就是问题所在。

      如果您根据官方的 tailwind 文档设置所有内容,您也会自动设置 purgeCSS。然后,这将在构建过程中从您的顺风文件中删除所有未使用的 CSS 类(在您的示例中部署到 gh-pages)

      要解决这个问题,您必须将类名具体写在某处,因为purgeCSS 会查找与项目中现有类名匹配的任何字符串

      就我而言,我只是在我的一个文件中使用了这样的多行注释:

        /**
         * PurgeCSS:
         * text-red-500
         * text-green-500
         * text-yellow-500
         * text-gray-500
         * text-purple-500
         * text-indigo-500
         * text-blue-500
         * text-pink-500
         *
      
         */
      

      这解决了 tailwind / purgecss 的任何构建问题,我现在可以愉快地在我的项目中使用动态类。

      希望这有帮助,我知道这有点晚了,但我只是偶然发现了这个问题,因为我 尝试自己解决!

      【讨论】:

        猜你喜欢
        • 2021-10-25
        • 2023-03-12
        • 2021-09-09
        • 2022-06-16
        • 2021-12-06
        • 1970-01-01
        • 2021-10-22
        • 1970-01-01
        • 2021-12-11
        相关资源
        最近更新 更多