Angular v12 组件样式文件未编译 tailwindcss @apply
Angular v12 Component style files not compiling tailwindcss @apply
我是一名计算机科学专业的学生,我正在为我的研究做一个项目。我目前尝试使用 Angular V12 为 Angular 框架开发一个组件库。对于样式我想使用 Tailwindcss(特别是因为它让我在某些点上不用处理媒体查询......)。无论如何,当我构建库并在另一个项目中对其进行测试时,没有包含顺风样式。
我从 tailwind 文档中了解到,您可以在纯 scss 中使用一些指令或函数,例如 @apply。
为了让您更好地理解这个问题,我已将 link 回购库 github 编辑到库的源代码以供参考。
我有一个按钮组件,应该应用一些顺风样式。这是通过为名为 .btn
的 html 元素指定 class 来完成的。此 class 在 button.component.scss
文件中定义。此文件在 button.component.ts
文件中也作为 styleUrl 引用。
所以我的问题是:如何解决未使用 button.component.scss
中的 @apply
应用样式的问题?
这是 button.component.scss
中定义样式的方式:
.btn {
@apply px-2 py-1 text-sm rounded-sm transition-all bg-placeholder-light hover:bg-placeholder active:bg-placeholder-dark relative border-2 border-transparent;
}
然后将此 .btn
class 应用于 html 元素,如下所示:
<button class="btn" (click)="clicked($event)">
<ng-content></ng-content>
</button>
导出它不应用之前定义的 classes。
但是,如果我像这样直接在 class 属性中应用样式:
<button class="px-2 py-1 text-sm rounded-sm transition-all bg-placeholder-light hover:bg-placeholder active:bg-placeholder-dark relative border-2 border-transparent" (click)="clicked($event)">
<ng-content></ng-content>
</button>
一切正常。这似乎是一个非常奇怪的行为,因为我希望 button.component.scss
文件以某种方式以正确的样式编译。
有办法解决这个问题吗?还是我必须采取非常不同的方法?
我知道我可以简单地应用上一个示例中的样式,但我想为开发人员提供添加 class 的选项,例如 btn-primary
(添加其他样式)。
我提前感谢大家花时间研究我的问题。希望有人能帮我解决这个问题。
希望你今天过得愉快!
PS: link 到 repo: https://github.com/z3ttee/alliance-ngx/tree/issue/tailwind/projects/alliance-ngx (你可能想使用分支 issue/tailwind)
我找到了解决方案,假设您发布的组件名为 ui-components
。
修改父项目(使用您的组件的项目)上的 tailwind 配置,使其具有如下内容:
module.exports = {
content: ['./src/**/*.html', './src/**/*.ts', './node_modules/ui-components/**/*.{html,ts,js}'],
variants: {},
plugins: [],
corePlugins: {
},
};
我是一名计算机科学专业的学生,我正在为我的研究做一个项目。我目前尝试使用 Angular V12 为 Angular 框架开发一个组件库。对于样式我想使用 Tailwindcss(特别是因为它让我在某些点上不用处理媒体查询......)。无论如何,当我构建库并在另一个项目中对其进行测试时,没有包含顺风样式。
我从 tailwind 文档中了解到,您可以在纯 scss 中使用一些指令或函数,例如 @apply。
为了让您更好地理解这个问题,我已将 link 回购库 github 编辑到库的源代码以供参考。
我有一个按钮组件,应该应用一些顺风样式。这是通过为名为 .btn
的 html 元素指定 class 来完成的。此 class 在 button.component.scss
文件中定义。此文件在 button.component.ts
文件中也作为 styleUrl 引用。
所以我的问题是:如何解决未使用 button.component.scss
中的 @apply
应用样式的问题?
这是 button.component.scss
中定义样式的方式:
.btn {
@apply px-2 py-1 text-sm rounded-sm transition-all bg-placeholder-light hover:bg-placeholder active:bg-placeholder-dark relative border-2 border-transparent;
}
然后将此 .btn
class 应用于 html 元素,如下所示:
<button class="btn" (click)="clicked($event)">
<ng-content></ng-content>
</button>
导出它不应用之前定义的 classes。 但是,如果我像这样直接在 class 属性中应用样式:
<button class="px-2 py-1 text-sm rounded-sm transition-all bg-placeholder-light hover:bg-placeholder active:bg-placeholder-dark relative border-2 border-transparent" (click)="clicked($event)">
<ng-content></ng-content>
</button>
一切正常。这似乎是一个非常奇怪的行为,因为我希望 button.component.scss
文件以某种方式以正确的样式编译。
有办法解决这个问题吗?还是我必须采取非常不同的方法?
我知道我可以简单地应用上一个示例中的样式,但我想为开发人员提供添加 class 的选项,例如 btn-primary
(添加其他样式)。
我提前感谢大家花时间研究我的问题。希望有人能帮我解决这个问题。
希望你今天过得愉快!
PS: link 到 repo: https://github.com/z3ttee/alliance-ngx/tree/issue/tailwind/projects/alliance-ngx (你可能想使用分支 issue/tailwind)
我找到了解决方案,假设您发布的组件名为 ui-components
。
修改父项目(使用您的组件的项目)上的 tailwind 配置,使其具有如下内容:
module.exports = {
content: ['./src/**/*.html', './src/**/*.ts', './node_modules/ui-components/**/*.{html,ts,js}'],
variants: {},
plugins: [],
corePlugins: {
},
};