【问题标题】:Blazor component isolated css with tailwind/postcss带有尾风/postcss 的 Blazor 组件隔离 css
【发布时间】:2021-03-26 22:27:12
【问题描述】:

是否可以对 blazor 组件隔离 css 使用 tailwind 和 postcss 语法?

我真的很喜欢 Tailwind 作为 CSS 框架,特别是它使用 postcss 和 @apply 功能,您可以将 tailwinds css 组件捆绑到一个单独的类中。

例如

.some-button {
    @apply px-4 py-2 bg-blue-400 text-white
}

我一直在考虑使用 Svelte,因为它同时提供 CSS 隔离和 postcss @apply 语法。然而,既然 Blazor 支持独立的 CSS,我真的很想更进一步,并能够从组件 CSS 中编写 postcss 样式。

那么...你知道这是否可能吗?

【问题讨论】:

    标签: blazor tailwind-css postcss


    【解决方案1】:

    是的,有可能! 使用 .NET 5.0 测试

    您必须在项目根目录中创建一个新的 npm 项目。

    1. 使用npm init 创建一个新的 npm 项目。
    2. npm i -D postcss-cli autoprefixer postcss tailwindcss添加tailwind和postcss的依赖
    3. 为 postcss 添加配置
    // postcss.config.js
    module.exports = {
        plugins: {
            tailwindcss: {},
            autoprefixer: {}
        }
    }
    
    1. 使用npx tailwindcss init 将tailwind.config.js 添加到项目中。 如果需要,您可以替换 purge 属性以删除未使用的 css 类。 但是当我使用 Razor 库时,这在我的测试中有点错误
    // tailwind.config.js
    purge: {
        enabled: true,
        content: [
            './**/*.html',
            './**/*.razor',
            './**/*.razor.css'
        ],
    },
    
    1. 将 post-css 构建脚本添加到您的 .csproj 文件中。这将在每次构建后将 postcss 规则应用于 Blazor 捆绑的样式表。

    对于 Blazor 项目:

    <Target Name="PostBuild" AfterTargets="PostBuildEvent">
        <Exec Command="npx postcss $(ProjectDir)obj\$(ConfigurationName)\net5.0\scopedcss\bundle\$(ProjectName).styles.css -r" />
    </Target>
    

    对于 Blazor 组件库:

    <Target Name="PostBuild" AfterTargets="PostBuildEvent">
        <Exec Command="npx postcss $(ProjectDir)obj\$(ConfigurationName)\net5.0\scopedcss\projectbundle\$(ProjectName).bundle.scp.css -r" />
    </Target>
    

    我不确定路径为何不同,我找不到任何文档。如果有人知道更多,请随时回复。

    如果有什么不合理或可以做得更好的地方,请告诉我!

    【讨论】:

    • 非常感谢您对此的投入,在使用没有组件库的标准 Blazor Web 项目或直接编译组件库时,它可以完美运行。但是,我认为当 Web 项目引用组件库时会出现问题。似乎组件库编译的 CSS 的第一行有 @import ''; 我认为这混淆了 postcss 过程,有什么想法吗?再次感谢
    • 我才刚刚开始,但它似乎也适用于 .NET 6!我将 net5.0 替换为 $(TargetFramework) 以使其更加不可知。
    猜你喜欢
    • 2021-04-07
    • 2021-02-20
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2021-03-01
    • 2017-07-29
    • 1970-01-01
    相关资源
    最近更新 更多