Partager cet article :

Blog
Aug 07, 20234 min read

Laravel Mix - un wrapper simple et puissant autour de Webpack

Stefani Tashkova

Développeur junior

Laravel Mix - un wrapper simple et puissant autour de Webpack

Laravel Mix

Nous allons parler de Laravel Mix. Pour mieux le comprendre, nous allons commencer par expliquer ce qu'est Webpack.

Webpack est un bundler de modules incroyablement puissant qui prépare votre JavaScript et vos actifs pour le navigateur. Mix est donc une fine couche au-dessus de webpack qui sert à construire dynamiquement votre configuration Webpack. Bien que Laravel Mix ait été conçu à l'origine pour les projets Laravel, il peut bien sûr être utilisé pour n'importe quel type d'application.

Vue d'ensemble

La dernière version de Laravel Mix est la version 6 et nécessite des dépendances compatibles avec Webpack 5 ou PostCSS 8. C'est un outil gratuit qui optimise et minifie automatiquement vos assets lors de la construction pour la production avec la commande npx mix --production, dont nous parlerons plus tard.

Laravel Mix est également livré avec un support basique des typescript et View, et pour aider à la mise en cache à long terme, mix fournit la méthode mix.version(). Avec la version activée, un ID de chaîne de requête unique sera ajouté à vos actifs chaque fois que votre code est compilé, et lors de la compilation, nous verrons les noms hachés dans le fichier mix-manifest.json. Un autre grand avantage de l'API mix est que nous pouvons isoler ou extraire les bibliothèques des fournisseurs dans leurs propres fichiers, ce qui se traduira bien sûr par un fichier app.js beaucoup plus petit. Avec le remplacement de modules à chaud, nous pouvons échanger, ajouter ou supprimer des modules pendant l'exécution d'une application sans avoir à la recharger complètement, et tout ce que nous devons faire est d'exécuter à partir de la ligne de commande npx mix watch --hot pour démarrer un serveur node et surveiller notre bundle pour les changements.

Mix fournit la commande mix.css() pour la compilation CSS de base et l'écosystème du plugin iPostCSS dans le cadre de notre compilation, et nous avons également des options pour la compilation Sass et Less. Par défaut, Mix achemine toutes nos feuilles de style CSS à travers le populaire plugin Autoprefixer PostCSS. Ainsi, nous sommes libres d'utiliser la dernière syntaxe CSS 3 en sachant que tous les préfixes nécessaires aux navigateurs seront appliqués automatiquement. Un concept clé à comprendre est que Mix et Webpack réécriront toutes les URLs avec des chemins relatifs dans nos feuilles de style, mais les chemins absolus seront toujours exclus de la réécriture d'URL.

Étapes de l'installation

Nous verrons ici comment installer et configurer Laravel Mix.

Tout d'abord, nous devons installer Mix via npm ou yarn.

npm install laravel-mix --save-dev

yarn add laravel-mix

La deuxième étape consiste à créer un fichier de configuration de mixage nommé webpack.mix.js

touch webpack.mix.js

Nous y définissons ensuite notre compilation. Dans cet exemple, nous définissons notre chemin public et utilisons la compilation mix sass.

const mix = require('laravel-mix');
mix.setPublicPath(`dist`);
mix.sass('resources/scss/app.scss', `dist/css`);
mix.js('resources/js/app.js', 'dist/js')

Enfin, il ne nous reste plus qu'à lancer une commande npx mix pour déclencher le build Webpack approprié.

Commandes CLI utiles

  • Compilation dans un environnement local

    npm mix
  • Surveiller les actifs pour détecter les changements

    montre npx mix
  • Sondage

    npx mix watch--watch-options-poll
  • Remplacement du module chaud

    npx mix watch --hot
  • Compilation pour la production

    npx mix --production
  • Personnaliser le chemin de configuration du mixage

    npx mix --mix-config=build/webpack.mix.js -production

Caractéristiques utiles

  • Mix fournit d'autres fonctionnalités utiles, par exemple si nous avons des bibliothèques de fournisseurs qui doivent rester séparées de notre bundle webpack principal, nous pouvons utiliser mix.combine() pour fusionner ou concaténer plusieurs fichiers en un seul fichier appelé par exemple merged.js.
  • Une autre fonctionnalité intéressante est browsersync, qui surveille automatiquement les modifications apportées à nos fichiers et les injecte dans le navigateur, sans qu'une actualisation manuelle ne soit nécessaire.
  • Dans certains cas, il peut s'avérer plus facile de descendre d'un niveau et de surcharger directement la configuration webpack sous-jacente et mix fournit la commande mix.webpackConfig() pour nous permettre de le faire.
  • Examinons maintenant les crochets d'événements. Dans certains scénarios, nous pouvons avoir besoin d'exécuter un élément de logique avant que la compilation ne commence. Par exemple, si nous avons besoin de copier un répertoire ou de déplacer un fichier, la fonction mix.before() le permet, et Mix ne commencera pas sa compilation tant que tous les hooks n'auront pas été entièrement résolus. D'autre part, nous pouvons exécuter un morceau de logique après que Webpack a terminé sa compilation avec la méthode mix.after(). Par exemple, si vous souhaitez enregistrer une liste de tous les actifs compilés.

Pour plus d'informations, vous pouvez consulter la documentation officielle de Laravel Mix.

S'ABONNER À NOTRE NEWSLETTER

Partager cet article :

S'ABONNER À NOTRE NEWSLETTER

Articles de blog connexes

    Construire une équipe Agile performante : Notre approche éprouvée

    Blog

    Construire une équipe Agile performante : Notre approche éprouvée

    Découvrez comment nous construisons des équipes Agile performantes en définissant des rôles clairs, en favorisant la collaboration et en utilisant des outils flexibles.

    Écrit par Svetoslava Angelova
    Aug 27, 202411 min read
    Drupal 11 : à quoi s'attendre ? Guide complet des nouvelles fonctionnalités et des améliorations

    Blog

    Drupal 11 : à quoi s'attendre ? Guide complet des nouvelles fonctionnalités et des améliorations

    Drupal 11 est sorti ! Dans cet article, découvrez ses fonctionnalités et améliorations passionnantes. Mettez-le à jour dès maintenant pour redéfinir votre stratégie numérique avec l'aide des experts de Bulcode.

    Écrit par Svetoslava Angelova
    Aug 05, 20249 min read
    Composants d'annuaire unique dans Drupal core : Une vue d'ensemble

    Blog

    Composants d'annuaire unique dans Drupal core : Une vue d'ensemble

    Découvrez comment les composants à répertoire unique (SDC) de Drupal Core rationalisent le processus de développement en encapsulant les fichiers liés aux composants dans un répertoire unique. Découvrez les avantages des SDC et suivez un guide étape par étape pour les mettre en œuvre dans vos projets Drupal.

    Écrit par Nikolay Tsekov
    Aug 07, 20244 min read
    Comprendre les versions de Drupal et planifier une stratégie de migration

    Blog

    Comprendre les versions de Drupal et planifier une stratégie de migration

    Reconnaître les différentes versions de Drupal et maintenir votre site web à jour.

    Écrit par Svetoslava Angelova
    Aug 08, 20235 min read
    Drupal 9 convertit les images au format WebP

    Blog

    Drupal 9 convertit les images au format WebP

    WebP est capable de porter la compression des données à un niveau supérieur grâce à l'inclusion d'un mode de prédiction dans le processus JPG, ce qui permet de voir clairement comment il peut surpasser son homologue basé sur JPG. Les résultats le prouvent.

    Écrit par Vasil Boychev
    Aug 08, 20238 min read
    Vue d'ensemble de React - Définition, SPA, Composants, Hooks

    Blog

    Vue d'ensemble de React - Définition, SPA, Composants, Hooks

    React est un framework JavaScript front-end gratuit et open-source permettant de créer des interfaces utilisateur basées sur des composants d'interface utilisateur. Il est également connu sous le nom de React.js ou ReactJS.

    Écrit par Mihail Shahov
    Aug 07, 20237 min read
    Qu'est-ce que la méthode Agile et pourquoi l'utiliser ?

    Blog

    Qu'est-ce que la méthode Agile et pourquoi l'utiliser ?

    La méthode Agile est une méthode de livraison de logiciels itérative et échelonnée dans le temps qui vise à fournir des logiciels progressivement tout au long du projet plutôt qu'en une seule fois vers la fin.

    Écrit par Svetoslava Angelova
    Aug 08, 20235 min read
    NVM vs NPM vs Yarn

    Blog

    NVM vs NPM vs Yarn

    Par rapport à ces trois technologies, le NVM diffère des deux autres. Node Version Manager (NVM) est utilisé pour gérer les versions de Node.js. NPM et Yarn sont des gestionnaires de paquets Node.js. Ils permettent de télécharger, d'installer et de gérer des paquets lors du développement en JavaScript.

    Écrit par Ventsislav Venkov
    Aug 07, 20235 min read
    Quel modèle d'engagement informatique vous convient le mieux ?

    Blog

    Quel modèle d'engagement informatique vous convient le mieux ?

    Prix fixe, temps et matériel, ou équipes dédiées ? Examinez attentivement les avantages et les inconvénients du modèle d'engagement pour votre projet.

    Écrit par Svetoslava Angelova
    Aug 07, 202311 min read
    Les sites web des aéroports de Varna et Burgas utilisent des composants React dans Drupal

    Blog

    Les sites web des aéroports de Varna et Burgas utilisent des composants React dans Drupal

    Drupal est un système modulaire dont les fonctions peuvent être adaptées à de nombreux besoins différents, ce qui est particulièrement important pour les projets d'administration publique.

    Écrit par Mihail Shahov
    Aug 08, 20234 min read
    Qu'est-ce que Scrum ?

    Blog

    Qu'est-ce que Scrum ?

    Scrum fait partie de la méthodologie Agile. C'est le cadre le plus populaire pour le développement agile, et c'est un cadre de processus simple.

    Écrit par Svetoslava Angelova
    Aug 08, 20235 min read
    Rôles dans Scrum

    Blog

    Rôles dans Scrum

    Les rôles Scrum et la manière dont vous pouvez les intégrer dans votre organisation.

    Écrit par Svetoslava Angelova
    Aug 07, 20234 min read

    PRENDRE CONTACT

    Vous avez un projet à lancer ?