Deel dit artikel:

Blog
Aug 22, 20234 min read

Laravel Mix - een eenvoudige en krachtige wrapper rond Webpack

Stefani Tashkova

Junior Ontwikkelaar

Laravel Mix - een eenvoudige en krachtige wrapper rond Webpack

Laravel Mix

We zullen het hebben over Laravel Mix. Om het beter te begrijpen, zullen we beginnen met uit te leggen wat Webpack is.

Webpack is een ongelooflijk krachtige modulebundelaar die je JavaScript en assets klaarmaakt voor de browser en daarom is Mix een dunne laag bovenop webpack die dient voor het dynamisch opbouwen van je Webpack-configuratie. Hoewel Laravel Mix oorspronkelijk is gebouwd voor Laravel-projecten, kan het natuurlijk worden gebruikt voor elk type applicatie.

Overzicht

De nieuwste versie van Laravel Mix is versie 6 en vereist afhankelijkheden die compatibel zijn met Webpack 5 of PostCSS 8. Het is een gratis tool die automatisch je assets optimaliseert en miniseert bij het bouwen voor productie met het npx mix --production commando, waar we het later over zullen hebben.

Laravel Mix wordt ook geleverd met basisondersteuning voor typescript en View, en om te helpen met caching op de lange termijn, biedt mix de methode mix.version(). Als versiebeheer is ingeschakeld, wordt elke keer dat je code wordt gecompileerd een unieke query string-ID toegevoegd aan je assets en bij het compileren zien we de gehashte namen in het bestand mix-manifest.json. Een ander groot voordeel van de mix API is dat we leveranciersbibliotheken kunnen isoleren of extraheren in hun eigen bestanden, wat natuurlijk zal resulteren in een aanzienlijk kleiner app.js bestand. Met hot module replacement kunnen we modules uitwisselen, toevoegen of verwijderen terwijl een applicatie draait zonder deze volledig te herladen. Het enige wat we moeten doen is vanaf de commandoregel npx mix watch --hot uitvoeren om een node server op te starten en onze bundel te controleren op wijzigingen.

Mix biedt het mix.css() commando voor basis CSS compilatie en het iPostCSS plugin ecosysteem als onderdeel van onze compilatie, en we hebben ook opties voor Sass en Less compilatie. Standaard leidt Mix al onze CSS door de populaire Autoprefixer PostCSS plugin. Als zodanig zijn we vrij om de nieuwste CSS 3-syntaxis te gebruiken, met dien verstande dat alle benodigde browser-prefixen automatisch worden toegepast. Een belangrijk concept om te begrijpen is dat Mix en Webpack alle URL's met relatieve paden binnen onze stylesheets zullen herschrijven, maar de absolute paden zullen altijd worden uitgesloten van URL-herschrijving.

Installatiestappen

Hier kunnen we zien hoe je Laravel Mix installeert en configureert.

Eerst moeten we Mix installeren via npm of yarn.

npm install laravel-mix --save-dev

yarn add laravel-mix

De tweede stap is het maken van een mix-configuratiebestand met de naam webpack.mix.js

webpack.mix.js aanraken

Dan definiëren we daar onze compilatie. In dit voorbeeld stellen we ons openbare pad in en gebruiken we de mix sass compilatie.

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

Tot slot hoeven we alleen nog maar een npx mix commando uit te voeren om de juiste Webpack build te activeren.

Nuttige CLI-commando's

  • Compileren in een lokale omgeving

    npm mix
  • Let op Activa voor veranderingen

    npx mix horloge
  • Polling

    npx mix-watch-opties-poll
  • Hete module vervangen

    npx mix horloge --hot
  • Compileren voor productie

    npx mix --productie
  • Het pad van de mixconfiguratie aanpassen

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

Nuttige functies

  • Mix biedt een aantal andere nuttige functies, bijvoorbeeld als we leverancierbibliotheken hebben die gescheiden moeten blijven van onze kernwebpack-bundel, kunnen we mix.combine() gebruiken om meerdere bestanden samen te voegen of op te tellen tot een enkel bestand met de naam bijvoorbeeld merged.js.
  • Een andere interessante functie is browsersync waarmee onze bestanden automatisch worden gecontroleerd op wijzigingen en eventuele wijzigingen in de browser worden geïnjecteerd, allemaal zonder dat er een handmatige verversing nodig is.
  • In bepaalde gevallen kan het gemakkelijker blijken om een niveau lager te gaan en de onderstreepte webpackconfiguratie rechtstreeks op te heffen en mix biedt het mix.webpackConfig() commando om ons toe te laten dit te doen.
  • Laten we nu eens kijken naar de event hooks. In sommige scenario's moeten we een stukje logica uitvoeren voordat de compilatie begint. Als we bijvoorbeeld een map moeten kopiëren of een bestand moeten verplaatsen, laat de functie mix.before() dit toe en Mix zal niet beginnen met compileren totdat alle haken volledig zijn opgelost. Aan de andere kant kunnen we een stuk logica uitvoeren nadat Webpack zijn compilatie heeft voltooid met de mix.after() methode. Bijvoorbeeld als u een lijst van alle gecompileerde assets wilt loggen.

Voor meer informatie kun je terecht in de officiële documentatie van Laravel Mix.

ABONNEER U OP ONZE NIEUWSBRIEF

Deel dit artikel:

ABONNEER U OP ONZE NIEUWSBRIEF

Verwante Blog Artikelen

    Waarom startups aarzelen om te werken met een softwareontwikkelingsbureau op maat - en hoe we elke zorg aanpakken

    Blog

    Waarom startups aarzelen om te werken met een softwareontwikkelingsbureau op maat - en hoe we elke zorg aanpakken

    <p>Startups aarzelen vaak om met softwarebureaus te werken omdat ze zich zorgen maken over kosten, controle en flexibiliteit. Ontdek hoe de softwareoplossingen op maat van Bulcode elke uitdaging aangaan en groei en flexibiliteit garanderen.</p>

    Geschreven door Svetoslava Angelova
    Nov 05, 20246 min read
    Bouwen aan een goed presterend Agile team: Onze bewezen aanpak

    Blog

    Bouwen aan een goed presterend Agile team: Onze bewezen aanpak

    Ontdek hoe we goed presterende Agile-teams bouwen door duidelijke rollen te definiëren, samenwerking te stimuleren en flexibele tools te gebruiken.

    Geschreven door Svetoslava Angelova
    Aug 27, 20249 min read
    Drupal 11: Wat kunt u verwachten? Uitgebreide gids voor nieuwe functies en verbeteringen

    Blog

    Drupal 11: Wat kunt u verwachten? Uitgebreide gids voor nieuwe functies en verbeteringen

    Drupal 11 is uit! Ontdek in dit artikel de spannende functies en verbeteringen. Upgrade nu en herdefinieer je digitale strategie met de deskundige ondersteuning van Bulcode.

    Geschreven door Svetoslava Angelova
    Aug 05, 20247 min read
    Single Directory-onderdelen in Drupal core: Een uitgebreid overzicht

    Blog

    Single Directory-onderdelen in Drupal core: Een uitgebreid overzicht

    Ontdek hoe Single Directory Components (SDC) in Drupal Core het ontwikkelproces stroomlijnen door componentgerelateerde bestanden in een enkele map in te kapselen. Leer meer over de voordelen van SDC's en volg een stap-voor-stap handleiding om ze te implementeren in uw Drupal-projecten.

    Geschreven door Nikolay Tsekov
    Aug 07, 20244 min read
    Scrum evenementen

    Blog

    Scrum evenementen

    Scrum definieert verschillende gebeurtenissen (soms ceremonies genoemd) die binnen elke sprint plaatsvinden: sprintplanning, dagelijkse scrum, sprint review en sprint retrospective.

    Geschreven door Svetoslava Angelova
    Aug 22, 20233 min read
    Scrum artefacten

    Blog

    Scrum artefacten

    Bij softwareontwikkeling verwijst de term "artefact" naar informatie die belanghebbenden en het scrumteam gebruiken om een product te beschrijven dat wordt ontwikkeld.

    Geschreven door Svetoslava Angelova
    Aug 22, 20232 min read
    Drupal zonder kop met Next.js - eenvoudig voorbeeld

    Blog

    Drupal zonder kop met Next.js - eenvoudig voorbeeld

    De laatste tijd is de trend in webontwikkeling in het algemeen, en dus ook in Drupal-ontwikkeling, om de technologie headless te gebruiken. De laatste tijd is de trend in webontwikkeling in het algemeen, en dus ook in Drupal-ontwikkeling, om de technologie headless te gebruiken.

    Geschreven door Mihail Shahov
    Aug 22, 20237 min read
    Speciale softwareontwikkelaars (teams) inhuren

    Blog

    Speciale softwareontwikkelaars (teams) inhuren

    Bent u het zat om de kosten te verhogen met uw interne ontwikkelteam? Waarom krijgt u geen toegewijd team tegen 40% tot 60% van de kosten?

    Geschreven door Mihail Shahov
    Aug 22, 20233 min read
    Het belang van de juiste ontwikkelingspartner in de levenscyclus van uw softwareontwikkeling

    Blog

    Het belang van de juiste ontwikkelingspartner in de levenscyclus van uw softwareontwikkeling

    Succes ontsluiten: De kunst van het kiezen van de perfecte softwareontwikkelingspartner. Ontdek de cruciale rol van partners in softwareontwikkeling, onthul ROI-geheimen en blijf de trends in de sector voor in dit must-read artikel.

    Geschreven door Mihail Shahov
    Sep 26, 20239 min read
    Config split module tutorial voor Drupal

    Blog

    Config split module tutorial voor Drupal

    Heel vaak moeten wij als ontwikkelaars met verschillende omgevingen werken. Dit kan soms leiden tot (on)verwachte problemen. In Drupal 8 gebruiken we het configuratiesysteem dat aardig goed werkt, maar er zijn gevallen waarin de instellingen voor de lokale en een andere omgeving anders zouden moeten zijn.

    Geschreven door Ivaylo Tsandev
    Aug 22, 20237 min read
    Onthulling van het krachtduo: Next.js als Headless frontend van Drupal 10

    Blog

    Onthulling van het krachtduo: Next.js als Headless frontend van Drupal 10

    Ontdek de dynamische synergie tussen Drupal 10 en Next.js, want deze krachtige combinatie verandert het landschap van webontwikkeling. Next.js, een open-source op React gebaseerd framework, is naadloos geïntegreerd als headless frontend van Drupal 10 en biedt een overvloed aan voordelen. Van verbeterde prestaties met functies als automatische codesplitsing en server-side rendering tot flexibel ontwerp en SEO-vriendelijke mogelijkheden, deze samenwerking stelt ontwikkelaars in staat om goed presterende, schaalbare en visueel aantrekkelijke webapplicaties te maken. Het efficiënte contentbeheer van Drupal 10 in combinatie met het aanpassingsvermogen van Next.js aan trends zorgt voor een geavanceerde ontwikkelaanpak, waardoor deze tandem in de voorhoede van moderne webontwikkelpraktijken staat. Omarm de toekomst met de combinatie van Drupal 10 en Next.js en herdefinieer hoe we dynamische online ervaringen benaderen en creëren.

    Geschreven door Todor Kolev
    Feb 09, 20245 min read
    Config ignore module tutorial voor Drupal

    Blog

    Config ignore module tutorial voor Drupal

    Soms willen we niet dat onze configuraties worden gedeeld in de codebase. Wat kunnen we in zulke gevallen doen?

    Geschreven door Ivaylo Tsandev
    Aug 22, 20237 min read

    NEEM CONTACT OP

    Heb je een project dat je wilt lanceren?