Hello
Introduction
J'ai un petit problème avec TailwindCSS ou plus précisément avec l'outil de développement sur Chrome (celui qui apparait en appuyant sur la touche F12 ou Ctrl+Shift+I.
Pour expliquer mon problème au mieux je vais y aller pas à pas, mais avant de commencer, je précise que je suis loin d'être un pro avec la technologie TailwindCSS, mais j'arrive à me débrouiller avec.
Pourquoi et comment ?
A la base, j'utilisait directement TailwindCSS via mon éditeur de code (PHPStorm, Sublime Text ou VSCode selon mon humeur du jour), j'appliquais les règles dans le fichier .html, ainsi que dans le fichier tailwind.css (avec les @tailwind base, @tailwind components, … etc ).
Cela marchait plutôt bien, mais dernièrement j'ai découvert un petit plugin pour Chrome: InspectFlow ( https://www.inspectflow.io/ ). Ce petit plugin, malheureusement payant (mais pas non plus hors de prix) est plutôt sympa, il permet d'ajouter des class en live et en gros me permettais de voir visuellement la construction des divers composants de ma page, et une fois fini, copier les class utilisé pour les mettre en dur dans mon code.
Le plugin est en test de mon coté, je le maitrise pas encore. De plus, ce qu'il fait on peut le faire directement via l'outil de développement de Chrome. C'est juste que le plugin permet de gagner du temps, ce qui est déjà pas mal.
Le soucis ?
Le soucis viens pas du plugin, il fait son boulot, il rajoute bien les class aux élément que je veux, mais de l'outil de développement de Chrome. Sur le source, je vois bien le changement, les class sont rajouté, mais au niveau de la visualisation, ben cela ne marche pas, rien de change. Bien sûr, je peut pas rafraichir la page (ni le cache) car dans ce cas je perds mes changement que j'ai fait à chaud.
Le projet Test
Pour expliquer ce problème je suis partit sur un projet simple basé sur une monopage en html. Pour créer ce projet, voici ce que j'ai fait :
- Création d'un dossier vide et initialisation d'un projet NodeJS (npm/yarn)
La rien de bien méchant j'ai juste créé un dossier vide et initialisation avec yarn pour avoir le fichier package.json.
Code:
mkdir tooldev
cd tooldev
tooldev> yarn init -y
A titre d'information, le fichier package.json ressemble à cela :
Code:
{
"name": "tooldev",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
- Création du dossier src et public dans le dossier tooldev
Simplement par la commande :
(Je suis en powershell)
- Installation des outils nécessaires
Dans le dossier racine du projet (tooldev), j'ai rajouter :
• http-server (un script permettant, comme son nom l'indique, de créer un serveur http via node)
• tailwindcss
• autoprefixer
• postcss-cli (oui je passe par postcss, même si ce n'est pas une obligation)
J'utilise donc la commande à la racine du projet :
Code:
yarn add --dev http-server tailwindcss autoprefixer postcss-cli
Pour la version test, je ne gère pas les version, la version courante sera très bien.
Yarn m'installe le tout sans aucun soucis et me transforme le fichier package.json en :
Code:
{
"name": "tooldev",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"devDependencies": {
"autoprefixer": "^10.4.4",
"http-server": "^14.1.0",
"postcss-cli": "^9.1.0",
"tailwindcss": "^3.0.23"
}
}
- Création des fichiers de configuration pour TailwindCSS et PostCSS
Ensuite, je créé les 2 fichiers de configuration via la commande (toujours à la racine du projet) :
Code:
npx tailwindcss init -p
Et j'obtient ces 2 fichiers :
postcss.config.js
Code:
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
tailwind.config.js
Code:
module.exports = {
content: [],
theme: {
extend: {},
},
plugins: [],
}
- Configuration de TailwindCSS
Je configure TailwindCSS pour le projet :
Code:
module.exports = {
content: [
"./public/**/*.html",
"./public/**/*js"
],
theme: {
extend: {},
},
plugins: [],
}
Pour le moment, je configure pas la purge, ce n'est pas franchement utile pour ce test, ce n'est pas de la prod.
- Création du fichier public/index.html et src/tailwind.config.css
Maintenant, je créer les 2 fichiers :
public/index.html
Code:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="tailwind.css">
<title>Test TailwindCSS</title>
</head>
<body>
<div class="container mx-auto">
<h1>Lorem ipsum dolor sit</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias debitis labore odio recusandae voluptates. Ab
alias aspernatur corporis distinctio ducimus facilis fugiat harum libero modi molestias nihil nulla optio
quae quasi, quis sequi sint sunt! Culpa dicta dignissimos, dolor dolore et ipsam laudantium molestiae nemo
nisi, nulla repellendus similique, sit!</p>
<p>Beatae commodi cumque doloremque doloribus in, ipsa iusto neque odit officiis ratione recusandae soluta velit
vitae. Accusamus ad asperiores assumenda consequatur ducimus eligendi, excepturi harum iusto labore maiores,
nam nihil numquam officia perspiciatis porro praesentium provident quae quas qui quod sit tempore totam
velit veritatis voluptatibus. Enim eveniet reiciendis sequi.</p>
<p>Aliquam asperiores autem corporis cum cumque dolore dolorem esse eveniet fugit hic illo inventore iste
laboriosam, nesciunt nobis odio quasi quos rerum sapiente sed sit tempore temporibus ullam vitae voluptas.
Dicta dignissimos et explicabo, id mollitia possimus reiciendis tempora totam ut veniam veritatis, voluptas?
Beatae consectetur facere quos reiciendis similique!</p>
</div>
</body>
</html>
src/tailwind.config.css
Code:
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
}
@layer components {
}
- Ajout des scripts dans le fichier package.json
Afin de faciliter la compilation et divers commande, je rajoute cela au fichier package.json :
Code:
{
"name": "tooldev",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"devDependencies": {
"autoprefixer": "^10.4.4",
"http-server": "^14.1.0",
"postcss-cli": "^9.1.0",
"tailwindcss": "^3.0.23"
},
"scripts": {
"build:css": "postcss ./src/tailwind.config.css -o ./public/tailwind.css",
"watch" : "postcss -w ./src/tailwind.config.css -o ./public/tailwind.css",
"serve": "http-server public"
}
}
Il faut voir la section scripts.
- Compilation de TailwindCSS
Je le fait par la commande :
A partir de là, il me créer le css final, cad public/tailwind.css.
Le problème est la
Le site est fonctionnel j'ai une page avec mon contenu sans mise en page hormis la container qui est centré. Le soucis est que si je change en live (ou en ajoutant) une class via le plugin ou par l'outil de développement de Chrome, il me change bien dans le code source (afficher dans l'outil) mais le navigateur en lui-même, rien de change. Pourtant l'outil et le plugin, voit la class.
Par exemple, si je pointe la balise h1 que je rajoute la class font-bold ou text-red-400, il me met bien la class dans le source mais aucun changement visuelle sur la page.
J'ai tester sur le site du plugin (auquel je suis sur qu'ils utilisent TailwindCSS) et la ca marche parfaitement.
Mes questions et observations
• Aurais-je louper un truc avec TailwindCSS ?
• Le plugin marche, vu que le prolème est aussi présent si je passe directement par l'outil de dev.
• J'ai testé avec http-server et sans (en mode local - html et F5 ^^). Cela ne change rien…
• Quelqu'un aurait des idées pour expliquer ce problème et comment je peut le résoudre afin de pouvoir voir les changement en live ?
• Coté extention j'ai juste l'extention pour React, je pense pas que cela joue car ca marche sur le site du plugin. Donc je pense pas qu'il y a un soucis particulier de ce coté…
Excuses et remerciement
Je sais que ce genre de problème, même si ce n'est pas forcement vital, est assez long à expliquer, donc pardon pour le pavé, mais j'ai voulu être au plus clair possible. Si jamais y a des questions hésitez pas.
Merci d'avance.