Module SCSS.6 – Compilation & tooling
Objectif
Maîtriser la compilation SCSS : outils de compilation, source maps, environnements de développement pour compiler efficacement le SCSS.
Théorie
Compilation SCSS
Processus :
SCSS (source) → Compilateur → CSS (navigateur)
Outils de compilation :
- Dart Sass : Officiel, moderne (recommandé)
- Node-sass : Ancien (déprécié)
- LibSass : C++ (déprécié)
Installation
Dart Sass (recommandé) :
# Installation globale
npm install -g sass
# Ou local dans le projet
npm install --save-dev sass
Vérification :
sass --version
Compilation de base
Commande simple :
sass input.scss output.css
Watch mode (auto-compilation) :
sass --watch input.scss:output.css
Dossier complet :
sass --watch scss:css
Options :
sass input.scss output.css --style expanded # Format lisible
sass input.scss output.css --style compressed # Minifié
sass input.scss output.css --style compact # Compact
sass input.scss output.css --no-source-map # Sans source map
Styles de compilation
Expanded (défaut) :
.button {
padding: 10px 20px;
background-color: blue;
}
Compressed (production) :
.button{padding:10px 20px;background-color:blue}
Compact :
.button { padding: 10px 20px; background-color: blue; }
Source Maps
Source maps = Fichiers qui lient le CSS compilé au SCSS source.
Activation :
sass scss:css --source-map
Avantages :
- ✅ Débogage dans DevTools
- ✅ Voir le SCSS source, pas le CSS compilé
- ✅ Breakpoints dans SCSS
Fichiers générés :
css/
├── style.css
└── style.css.map (source map)
HTML :
<link rel="stylesheet" href="css/style.css">
<!-- Source map détecté automatiquement -->
Environnements
Développement
Configuration :
sass --watch scss:css --style expanded --source-map
Caractéristiques :
- Format expanded (lisible)
- Source maps activés
- Watch mode
- Pas de minification
Production
Configuration :
sass scss:css --style compressed --no-source-map
Caractéristiques :
- Format compressed (minifié)
- Pas de source maps
- Optimisé pour performance
Intégration avec build tools
Webpack
Installation :
npm install --save-dev sass-loader sass webpack
Configuration :
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
}
]
}
};
Vite
Installation :
npm install --save-dev sass
Utilisation :
// style.scss
// Importé directement dans JS/TS
Configuration automatique : Vite gère SCSS nativement.
Gulp
Installation :
npm install --save-dev gulp gulp-sass sass
Configuration :
// gulpfile.js
const gulp = require('gulp');
const sass = require('gulp-sass')(require('sass'));
gulp.task('sass', function() {
return gulp.src('scss/**/*.scss')
.pipe(sass({ outputStyle: 'compressed' }).on('error', sass.logError))
.pipe(gulp.dest('css'));
});
gulp.task('watch', function() {
gulp.watch('scss/**/*.scss', gulp.series('sass'));
});
Parcel
Installation :
npm install --save-dev parcel sass
Utilisation :
<link rel="stylesheet" href="scss/main.scss">
Configuration automatique : Parcel gère SCSS nativement.
npm scripts
package.json :
{
"scripts": {
"sass": "sass scss:css",
"sass:watch": "sass --watch scss:css",
"sass:build": "sass scss:css --style compressed --no-source-map"
}
}
Utilisation :
npm run sass # Compilation unique
npm run sass:watch # Watch mode
npm run sass:build # Build production
VS Code extensions
Extensions recommandées :
- Live Sass Compiler : Compilation automatique
- Sass : Syntax highlighting
- SCSS IntelliSense : Autocomplétion
Configuration Live Sass Compiler :
// settings.json
{
"liveSassCompile.settings.formats": [
{
"format": "expanded",
"extensionName": ".css",
"savePath": "/css",
"sourceMap": true
}
],
"liveSassCompile.settings.excludeList": [
"**/node_modules/**",
"**/vendors/**"
]
}
Gestion des erreurs
Erreurs de compilation :
Error: Invalid CSS after "...": expected selector
Solutions :
- Vérifier la syntaxe SCSS
- Vérifier les imports
- Vérifier les variables/mixins
Mode verbose :
sass scss:css --verbose
Exercices guidés
Exercice 1 : Installation et première compilation
Installez Sass :
- Installation Dart Sass
- Compilez un fichier SCSS simple
- Vérifiez le CSS généré
Exercice 2 : Watch mode
Utilisez le watch mode :
sass --watch scss:css- Modifiez le SCSS
- Observez la compilation automatique
Exercice 3 : Styles de compilation
Testez les différents styles :
- Expanded
- Compressed
- Compact
- Comparez les résultats
Exercice 4 : Source maps
Activez les source maps :
- Compilez avec
--source-map - Ouvrez DevTools
- Inspectez le CSS (voir le SCSS source)
Exercice 5 : npm scripts
Créez des scripts npm :
- Script pour développement
- Script pour production
- Utilisez-les
❌ Erreurs fréquentes
Erreur 1 : Oublier de compiler
❌ Mauvais :
- Modifier SCSS
- Oublier de compiler
- Se demander pourquoi ça ne marche pas
✅ Bon :
- Utiliser watch mode
- Ou compiler après modification
Pourquoi : SCSS doit être compilé.
Erreur 2 : Source maps en production
❌ Mauvais :
sass scss:css --style compressed --source-map
✅ Bon :
sass scss:css --style compressed --no-source-map
Pourquoi : Source maps = fichiers supplémentaires, pas besoin en production.
Erreur 3 : Format expanded en production
❌ Mauvais :
sass scss:css --style expanded
✅ Bon :
sass scss:css --style compressed
Pourquoi : Compressed = plus petit, meilleure performance.
Erreur 4 : Pas de watch mode en développement
❌ Mauvais :
- Compiler manuellement à chaque modification
✅ Bon :
- Utiliser
--watchou build tool
Pourquoi : Watch mode = productivité.
Erreur 5 : Imports incorrects
❌ Mauvais :
@import '_variables.scss'; // Avec _ et .scss
✅ Bon :
@import 'variables'; // Sans _ ni .scss
Pourquoi : SCSS résout automatiquement.
🚀 Mini-projet
Mission : Configurer un workflow SCSS complet
Créez un projet avec :
Configuration :
- Structure SCSS organisée
- npm scripts (dev, build)
- Watch mode pour développement
- Compilation minifiée pour production
Environnements :
- Développement : expanded + source maps
- Production : compressed + no source maps
Intégration :
- VS Code avec extensions
- Ou build tool (Vite, Webpack)
Critères :
- ✅ Compilation fonctionnelle
- ✅ Watch mode configuré
- ✅ Scripts npm organisés
- ✅ Source maps en dev
- ✅ Production optimisée
Objectif : Maîtriser la compilation SCSS et créer un workflow professionnel.
Validation : Vous pouvez passer au module suivant quand vous maîtrisez la compilation SCSS et avez configuré un workflow fonctionnel.