Séance 4

Découverte de Webpack pour organiser ses assets

Webpack est un automatiseur (ou encore module bundler) de tâches, pour le "front", qui vous permet de fusionner plusieurs fichiers CSS, plusieurs fichiers javascript, de minifier le JS ou le CSS, de transformer du code typeScript, Ecmas, ... en du javascript compréhensible par tous les navigateurs, de compiler du SCC/SASS en du CSS, ...

Pour fonctionner, vous devez avoir NodeJs d'installé sur votre serveur (ou dans votre environnement de travail)

Principe de fonctionnement

Comme le montre le schéma ci-dessus, l'intérêt de Webpack est de prendre tous les éléments de votre projet (avec les dépendances, les différents formats, ...) et de les préparer, compiler, optimiser pour vous donner en sortie, les formats standards pour les navigateurs (JS, CSS, et images).

Première mise en place

Pré-requis

Installer NodeJs (version 10.13 minimum). Pour vous en assurer

node -v

Normalement NPM est installé automatiquement avec NodeJS (mais vous pouvez aussi utiliser Yarn)

npm -v

Si votre projet n'est pas encore gérer avec npm (vous n'avez pas de gestion de dépendance, et donc pas de package.json à la racine de votre projet), vous devez initialiser votre répertoire

cd votreProjet
npm init

Et ensuite installer Webpack :

npm install webpack webpack-cli --save-dev

L'idée est ensuite d'avoir un fichier qui va regrouper toutes les dépendances (souvent nommé index.js ou app.js), c'est ce fichier que WebPack utilisera pour "comprendre" votre projet.

Première utilisation

Pour une première mise en place, on peut se baser sur le guide officiel ici : https://webpack.js.org/guides/getting-started/

Dans ce guide vous trouverez comment mettre en place le fichier de configuration de webpack (webpack.config.js) qui sera l'élément principal de la configuration.

Et ensuite ?

A ce stade de la configuration Webpack ne gère pas encore beaucoup de choses. Uniquement le JS, mais sans minification, pas de CSS, ...

Il va donc falloir ajouter les règles (des loaders) pour les différents éléments que vous souhaitez gérer.

CSS

Et la minification du CSS

Si vous travailler avec du SASS/SCSS, il vous faudra expliquer à webpack comment le compiler en du CSS :

Vous pouvez gérer de la même manière vos images, vos polices, ...

Quelques ressources

Configuration d'un projet complet avec Webpack 5

Un autre tuto, écrit et pas à pas :

Une série de tutos sur Webpack 4 en français

Attention cette série de vidéo est faite avec Webpack 4. Il peut y avoir des changements plus ou moins importants avec Webpack 5. (voir ici : https://webpack.js.org/migrate/5/)

Alternatives à Webpack

Webpack est sans doute la solution la plus connue actuellement, mais aussi probablement la plus complexe (parce que très complète).

Avant Webpack, beaucoup d'autres solutions existaient, et vous pourrez rencontrer par exemple :

Chacun apportant son interprétation et sa complexité, mais répondant généralement parfaitement aux besoins basiques (compressions, fusion, traduction de code).

Last updated