Module Bootstrap.8 – Bootstrap avancé
Objectif
Maîtriser les fonctionnalités avancées Bootstrap : custom build, intégration SCSS, personnalisation poussée pour créer des builds optimisés.
Théorie
Custom build
Custom build = Compiler Bootstrap avec seulement les parties nécessaires.
Avantages :
- ✅ Bundle plus petit
- ✅ CSS optimisé
- ✅ Personnalisation complète
Processus :
- Importer Bootstrap SCSS
- Personnaliser les variables
- Importer seulement les parties nécessaires
- Compiler
Exemple :
// _custom-bootstrap.scss
// 1. Functions et variables
@import "~bootstrap/scss/functions";
@import "~bootstrap/scss/variables";
// 2. Personnalisation
$primary: #custom-color;
$enable-rounded: false; // Désactiver border-radius
// 3. Mixins
@import "~bootstrap/scss/mixins";
// 4. Imports sélectifs
@import "~bootstrap/scss/root";
@import "~bootstrap/scss/reboot";
@import "~bootstrap/scss/type";
@import "~bootstrap/scss/grid";
@import "~bootstrap/scss/buttons";
@import "~bootstrap/scss/cards";
@import "~bootstrap/scss/utilities";
@import "~bootstrap/scss/utilities/api";
Intégration SCSS
Structure recommandée :
scss/
├── abstracts/
│ └── _variables.scss
├── bootstrap/
│ └── _custom-bootstrap.scss
└── main.scss
main.scss :
// 1. Variables personnalisées
@import "abstracts/variables";
// 2. Bootstrap personnalisé
@import "bootstrap/custom-bootstrap";
// 3. Overrides additionnels
.custom-component {
// Styles personnalisés
}
Désactiver des fonctionnalités
Variables de configuration :
// Désactiver border-radius
$enable-rounded: false;
// Désactiver shadows
$enable-shadows: false;
// Désactiver gradients
$enable-gradients: false;
// Désactiver transitions
$enable-transitions: false;
// Désactiver grid
$enable-grid-classes: false;
Avantages :
- Réduire la taille du CSS
- Simplifier si non utilisé
Personnalisation poussée
Créer des variantes de composants
Nouveaux boutons :
// Créer .btn-brand
.btn-brand {
@extend .btn-primary;
background-color: $brand-color;
border-color: $brand-color;
&:hover {
background-color: darken($brand-color, 10%);
}
}
Étendre la grille
Colonnes supplémentaires :
// Ajouter col-13, col-14, etc.
@for $i from 13 through 24 {
.col-#{$i} {
flex: 0 0 percentage($i / 24);
max-width: percentage($i / 24);
}
}
Nouveaux utilitaires
Créer vos propres utilitaires :
// Ajouter à utilities/api
$utilities: map-merge(
$utilities,
(
"cursor": (
property: cursor,
values: pointer grab not-allowed
)
)
);
Build tools
Webpack
Configuration :
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
}
]
}
};
Vite
Configuration automatique :
// style.scss importé dans main.js
@import "bootstrap";
Vite gère SCSS nativement.
Gulp
Configuration :
// gulpfile.js
const sass = require('gulp-sass')(require('sass'));
gulp.task('bootstrap', function() {
return gulp.src('scss/main.scss')
.pipe(sass({ outputStyle: 'compressed' }))
.pipe(gulp.dest('css'));
});
Optimisation avancée
Tree-shaking
Imports sélectifs :
// Importer seulement ce qui est utilisé
@import "bootstrap/grid";
@import "bootstrap/buttons";
// Pas de carousel si non utilisé
Purge CSS
Configuration :
// postcss.config.js
module.exports = {
plugins: [
require('@fullhuman/postcss-purgecss')({
content: ['./src/**/*.html', './src/**/*.js'],
safelist: ['btn-primary', 'modal']
})
]
};
Source maps
Activer pour développement :
// Compilation avec source maps
sass scss:css --source-map
Exercices guidés
Exercice 1 : Custom build
Créez un build personnalisé :
- Imports sélectifs
- Variables personnalisées
- Comparez la taille avant/après
Exercice 2 : Intégration SCSS
Intégrez Bootstrap dans votre structure SCSS :
- Variables dans abstracts
- Bootstrap personnalisé
- Overrides organisés
Exercice 3 : Désactiver fonctionnalités
Testez la désactivation :
- Désactivez rounded
- Désactivez shadows
- Comparez la taille
Exercice 4 : Nouveaux composants
Créez des variantes :
- Nouveaux boutons
- Nouveaux utilitaires
- Utilisez @extend
Exercice 5 : Build tool
Configurez un build tool :
- Webpack ou Vite
- Compilation automatique
- Watch mode
❌ Erreurs fréquentes
Erreur 1 : Importer tout Bootstrap
❌ Mauvais :
@import "bootstrap"; // Tout
✅ Bon :
// Imports sélectifs
@import "bootstrap/grid";
@import "bootstrap/buttons";
Pourquoi : Réduire la taille.
Erreur 2 : Variables après imports
❌ Mauvais :
@import "bootstrap";
$primary: #custom; // Trop tard
✅ Bon :
$primary: #custom; // Avant
@import "bootstrap";
Pourquoi : Variables doivent être définies avant.
Erreur 3 : Oublier les dépendances
❌ Mauvais :
@import "bootstrap/buttons"; // Sans variables
✅ Bon :
@import "bootstrap/functions";
@import "bootstrap/variables";
@import "bootstrap/mixins";
@import "bootstrap/buttons";
Pourquoi : Dépendances nécessaires.
Erreur 4 : Build non optimisé
❌ Mauvais :
// Tout Bootstrap + overrides partout
✅ Bon :
// Imports sélectifs + personnalisation organisée
Pourquoi : Performance et maintenabilité.
Erreur 5 : Pas de purge CSS
❌ Mauvais :
/* CSS non utilisé inclus */
✅ Bon :
// Purge CSS configuré
Pourquoi : Réduire la taille finale.
🚀 Mini-projet
Mission : Créer un build Bootstrap personnalisé optimisé
Créez un build complet :
Custom build :
- Imports sélectifs (seulement ce qui est utilisé)
- Variables personnalisées
- Fonctionnalités désactivées si non utilisées
Intégration :
- Structure SCSS organisée
- Build tool configuré
- Purge CSS activé
Optimisation :
- Bundle size réduit
- Performance optimale
- Personnalisation complète
Critères :
- ✅ Build personnalisé fonctionnel
- ✅ Bundle optimisé (taille réduite)
- ✅ Personnalisation complète
- ✅ Build tool configuré
- ✅ Production ready
Objectif : Maîtriser les fonctionnalités avancées Bootstrap pour créer des builds optimisés.
Validation : Vous pouvez passer au module suivant quand vous maîtrisez le custom build, l'intégration SCSS et avez créé un build optimisé.