json 强制Tailwind在构建阶段包含一些类

wlp8pajw  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(81)

在我的Angular项目中,我最近将一个菜单从一个typescript变量移动到一个从后端动态加载的json中。
一些Tailwind类只在这个菜单中使用,所以现在在构建时Tailwind不知道它必须包括这些类的样式。
是否可以强制Tailwind总是包含一些类?例如,通过处理tailwind.config.js文件。
作为解决方案,实际上我已经在index.html中包含了这一行(但我不喜欢eslint中的错误):

<!--<span class="hidden bg-green-400 bg-pink-400"></span>-->
wfveoks0

wfveoks01#

正如Ihar Aliakseyenka所建议的,“安全列表”部分正是我要找的。谢谢Ihar!

module.exports = {
  content: [
    './pages/**/*.{html,js}'
    './components/**/*.{html,js}',
  ],
  safelist: [
    'bg-red-500',
    'text-3xl',
    'lg:text-4xl',
  ]
  // ...
}
ljsrvy3e

ljsrvy3e2#

Tailwind使用tree-shaking,即任何未在源文件中声明的类,不会在输出文件中生成。
因此使用safelist classes
单位:tailwind.config.js

module.exports = {
  content: [
    './pages/**/*.{html,js}',
    './components/**/*.{html,js}',
  ],
  safelist: [
    {
      pattern: /bg-(red|green|blue|orange)-(100|500|700)/, // You can display all the colors that you need
      variants: ['lg', 'hover', 'focus', 'lg:hover'],      // Optional
    },
  ],
  // ...
}
如何使它更通用,以包括所有可能的顺风颜色?
const tailwindColors = require("./node_modules/tailwindcss/colors")
const colorSafeList = []

// Skip these to avoid a load of deprecated warnings when tailwind starts up
const deprecated = ["lightBlue", "warmGray", "trueGray", "coolGray", "blueGray"]

for (const colorName in tailwindColors) {
  if (deprecated.includes(colorName)) {
    continue
  }

  // Define all of your desired shades
  const shades = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900]

  const pallette = tailwindColors[colorName]

  if (typeof pallette === "object") {
    shades.forEach((shade) => {
      if (shade in pallette) {
       // colorSafeList.push(`text-${colorName}-${shade}`)  <-- You can add different colored text as well 
        colorSafeList.push(`bg-${colorName}-${shade}`)
      }
    })
  }
}

// tailwind.config.js
module.exports = {
  safelist: colorSafeList,                      // <-- add the safelist here
  content: ["{pages,app}/**/*.{js,ts,jsx,tsx}"],
  theme: {
    extend: {
      colors: tailwindColors,
    },
  },
  plugins: [],
}

相关问题