Au début, j’ai pensé que je devrais remplacer des modèles entiers pour ajouter les classes utilitaires de Tailwind au HTML. Remplacer les modèles Discourse en bloc est une mauvaise idée, m’a-t-on informé. Heureusement, Tailwind vous permet également d’appliquer son CSS à des noms de classes arbitraires.
Quelque chose comme ce qui suit est possible…
@layer components {
.d-header {
@apply bg-blue-100;
}
#main-outlet.wrap {
@apply bg-yellow-200;
}
}
… ce qui est une bonne nouvelle. J’ai donc configuré un nouveau thème en utilisant l’outil CLI discourse_theme. J’ai créé un fichier tailwind-input.css et j’ai demandé à Tailwind de le consommer et de générer à partir de celui-ci un fichier common/common.scss.
Mais ensuite, Sass s’est plaint. Il a dit
✘ Error in common scss: Error: Function rgb is missing argument $green.
on line 477 of common.scss
> background-color: rgb(239 246 255 / var(--tw-bg-opacity));
Apparemment, on n’est pas censé fournir du CSS généré par Tailwind à un fichier Sass. La solution recommandée est de configurer votre application Rails avec ceci
config.assets.css_compressor = nil
Je ne connais pas Rails ni la configuration du backend de Discourse, et je suis sur un hébergement géré, donc je ne sais pas si c’est une solution réalisable pour moi.
J’ai donc continué à chercher une autre solution, et j’ai découvert que je pouvais dire à Tailwind de ne pas utiliser cette syntaxe rgb problématique.
C’est donc ce que j’ai fait pour l’instant, et les choses semblent fonctionner… mais cela ressemble plus à une solution de contournement temporaire qu’à une solution appropriée…
Une bonne solution serait de fournir au thème Discourse un fichier CSS ordinaire, comme common.css au lieu de common.scss. J’ai essayé, mais Discourse a ignoré mon fichier CSS.
Est-il possible de dire à Discourse d’utiliser ce fichier CSS à la place du fichier Sass ? Ou existe-t-il une autre bonne solution à ce problème ?