{"id":61324,"date":"2024-12-02T10:23:46","date_gmt":"2024-12-02T09:23:46","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=61324&#038;preview=true&#038;preview_id=61324"},"modified":"2024-12-10T15:29:39","modified_gmt":"2024-12-10T14:29:39","slug":"wp-scripts-ontwikkeling","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/","title":{"rendered":"WordPress ontwikkeling voor gevorderden: hoe je je volgende project bouwt met wp-scripts"},"content":{"rendered":"<p>Het ontwikkelen van WordPress als bureau kan best competitief zijn. Het vereist uiterste effici\u00ebntie en consistentie bij meerdere klantprojecten.<\/p>\n<p>Hoe doorgewinterd je ook bent als ontwikkelaar, het beheren van een hele portfolio van aangepaste thema&#8217;s en plugins vergt nog steeds een voortdurende inspanning als het gaat om het stroomlijnen van de workflow. Maak kennis met <code>wp-scripts<\/code>: een krachtig pakket aan tools dat een revolutie teweeg kan brengen in de manier waarop jouw bureau de ontwikkeling van WordPress benadert.<\/p>\n<p>Deze uitgebreide gids gaat in op de mogelijkheden van <code>wp-scripts<\/code> en verkent technieken voor je bouwprocessen. Er wordt ingegaan op geoptimaliseerde compilatie en bundeling, geautomatiseerd linten, unit testen en nog veel meer &#8211; dit alles zal je aanspreken als je jongleert met meerdere WordPress projecten.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Het concept van een &#8216;bouwproces&#8217;<\/h2>\n<p>Laten we, voordat we naar de specifieke kenmerken van <code>wp-scripts<\/code> kijken, eerst het bredere concept van het bouwproces van je webontwikkeling begrijpen. Dit bestaat uit een reeks geautomatiseerde taken om van je sourcecode een productieklare app of website te maken.<\/p>\n<p>Er zijn bijvoorbeeld veel taken die op deze manier profiteren van automatisering:<\/p>\n<ul>\n<li>Het compileren van moderne JavaScript naar browser-compatibele code.<\/li>\n<li>CSS preprocessortalen (bijvoorbeeld <a href=\"https:\/\/sass-lang.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sass<\/a>) omzetten in standaard CSS.<\/li>\n<li>Minimaliseren en optimaliseren van assets zoals <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a>, CSS en media.<\/li>\n<li>Linters uitvoeren om potenti\u00eble fouten op te sporen en coderingsstandaarden af te dwingen.<\/li>\n<li>Het uitvoeren van <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/\">unit tests<\/a> om een betere functionaliteit van de code te garanderen.<\/li>\n<\/ul>\n<p>Dit zijn goede aspecten om te automatiseren voor elke <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-workflow\/\">ontwikkelworkflow<\/a>, maar voor bureaus is het proces net zo cruciaal. Om te beginnen kun je consistentie behouden tussen meerdere projecten (en je team).<\/p>\n<p>Je kunt ook sneller ontwikkelen en implementeren en al je projecten onderhouden door gebruik te maken van die consistentie, zelfs de meest complexe projecten. Voor de eindgebruiker zullen de geoptimaliseerde prestaties die je krijgt doorsijpelen naar hun algehele ervaring.<\/p>\n<p>Gewoonlijk &#8216;knutselt&#8217; je bureau custom bouwprocessen in elkaar met tools zoals <a href=\"https:\/\/community.kinsta.com\/t\/install-node-and-gulp\/2804\" target=\"_blank\" rel=\"noopener noreferrer\">Gulp<\/a>, <a href=\"https:\/\/gruntjs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Grunt<\/a> of zelfs handmatige processen. Deze benaderingen kunnen echter vaak leiden tot inconsistenties tussen projecten, om nog maar te zwijgen van de aanzienlijke onderhoudsoverhead.<\/p>\n<h2>wp-scripts: een workflow-wisselaar voor WordPress ontwikkeling binnen een bureau<\/h2>\n<p>In de context van WordPress kan een bouwproces ook een aanzienlijke stroomlijning bieden voor de ontwikkeling van thema&#8217;s en plugins. Hiermee kun je moderne tools en werkwijzen gebruiken en tegelijkertijd zorgen voor platformcompatibiliteit.<\/p>\n<p>Het <code>@wordpress\/scripts<\/code> pakket &#8211; <code>wp-scripts<\/code> in dit artikel &#8211; is een verzameling configuratiebestanden en scripts waarmee je het bouwproces voor WordPress projecten kunt vereenvoudigen.<\/p>\n<figure id=\"attachment_186951\" aria-describedby=\"caption-attachment-186951\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-186951 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/10\/wp-scripts.png\" alt=\"Een codefragment dat de scripts sectie van een package.json bestand voor een WordPress project weergeeft. Het vermeldt verschillende npm scripts voor taken zoals het bouwen, het controleren van engines en licenties, opmaak, linten (voor CSS, JavaScript, Markdown docs en package.json), het bijwerken van pakketten, het maken van plugin zip-bestanden, het starten van het project en het uitvoeren van tests (zowel end-to-end als unit tests). Alle scripts gebruiken wp-scripts als basiscommando.\" width=\"1200\" height=\"842\"><figcaption id=\"caption-attachment-186951\" class=\"wp-caption-text\">Deel van een wp-scripts referentie voor de verschillende scripts die een project zal gebruiken.<\/figcaption><\/figure>\n<p>Het Make WordPress Core team ontwikkelt en onderhoudt het pakket, dat een integraal onderdeel is van de Block en Site Editors. Het beste van alles is dat je het ook kunt gebruiken voor het ontwikkelen van aangepaste thema&#8217;s en plugins.<\/p>\n<p>Voor het benaderen van WordPress ontwikkeling op schaal binnen een bureau, zal <code>wp-scripts<\/code> een centraal onderdeel zijn van de workflow. Het is meer dan een eenvoudig bouwprogramma; het is een uitgebreide oplossing voor moderne WordPress projecten die aansluit bij de behoefte aan een geavanceerde ontwikkelworkflow.<\/p>\n<h3>De belangrijkste functionaliteit van wp-scripts<\/h3>\n<p>Naarmate meer moderne JavaScript praktijken doordringen in het WordPress ecosysteem, hebben we meer gestandaardiseerde bouwtools nodig om ze toe te passen. Een uniforme build toolset in de vorm van <code>wp-scripts<\/code> komt het hele WordPress ontwikkel-ecosysteem ten goede.<\/p>\n<p>Als zodanig biedt <code>wp-scripts<\/code> een reeks features die de ontwikkeling van WordPress effici\u00ebnter maken:<\/p>\n<ul>\n<li><strong>&#8216;Zero-config&#8217; setup.<\/strong> Je kunt beginnen zonder complexe <a href=\"https:\/\/kinsta.com\/blog\/vite-vs-webpack\/\">webpack<\/a> configuraties.<\/li>\n<li><strong>Moderne JavaScript ondersteuning.<\/strong> Je ES6 code wordt getranspileerd voor browsercompatibiliteit en geeft je meer vertrouwen in de nauwkeurigheid ervan.<\/li>\n<li><strong>Ingebouwde CSS verwerking.<\/strong> Als je CSS preprocessors zoals Sass gebruikt, krijg je out of the box ondersteuning.<\/li>\n<li><strong>Tools voor codekwaliteit.<\/strong> Het pakket integreert zowel <a href=\"https:\/\/kinsta.com\/nl\/blog\/vscode-extensies\/#1-prettier\">ESLint als Prettier<\/a> voor consistente codestijl en -kwaliteit.<\/li>\n<li><strong>Tools voor testen.<\/strong> Je hebt <a href=\"https:\/\/kinsta.com\/blog\/jest\/\">Jest<\/a> beschikbaar in het pakket voor eenheidstesten en eenvoudige uitvoering.<\/li>\n<li><strong>Hot reloading.<\/strong> Als je de mogelijkheid hebt om je wijzigingen live te herladen, kan dit je ontwikkeltijd versnellen.<\/li>\n<\/ul>\n<p>In combinatie biedt <code>wp-scripts<\/code> veel belangrijke voordelen voor bureaus die meerdere WordPress projecten beheren. Je kunt bijvoorbeeld je ontwikkelomgeving standaardiseren voor elk project en het bouwproces ook repliceren voor nieuwe projecten. Met het pakket kun je de dependencies van je buildtool centraliseren, waardoor updates en beveiligingspatches beter beheersbaar zijn.<\/p>\n<p>In het algemeen kun je je minder zorgen maken over compatibiliteitsproblemen, je installatietijd verkorten en veel van de typische fouten die je maakt tijdens het minder gestroomlijnde bouwproces elimineren.<\/p>\n<h3>Wp-scripts vergelijken met een typisch WordPress ontwikkelproces<\/h3>\n<p>Bij een typische WordPress ontwikkeling wordt vaak gebruik gemaakt van <a href=\"https:\/\/kinsta.com\/nl\/blog\/wp-enqueue-scripts\/\">handmatige enqueuing voor scripts en stijlen<\/a>. Daarnaast schrijf je waarschijnlijk <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-javascript\/\">vanilla JavaScript<\/a> of <a href=\"https:\/\/kinsta.com\/nl\/blog\/jquery\/\">jQuery<\/a> en vertrouw je op externe bouwprogramma&#8217;s &#8211; of helemaal geen bouwproces.<\/p>\n<p>Daarentegen biedt wp-scripts een moderne, ge\u00efntegreerde aanpak op bijna elk gebied:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Element<\/td>\n<td>Typische ontwikkeling<\/td>\n<td>wp-scripts<\/td>\n<\/tr>\n<tr>\n<td>JavaScript<\/td>\n<td>Vaak vanilla JavaScript of jQuery<\/td>\n<td>ES6 en React ondersteuning<\/td>\n<\/tr>\n<tr>\n<td>CSS<\/td>\n<td>Directe CSS of basis preprocessors<\/td>\n<td>Ondersteuning voor Sass en PostCSS verwerking<\/td>\n<\/tr>\n<tr>\n<td>Bouwproces<\/td>\n<td>Een handmatige of custom setup met Gulp of Grunt<\/td>\n<td>Nul-configuratie met webpack, ge\u00efntegreerd in het pakket.<\/td>\n<\/tr>\n<tr>\n<td>Code kwaliteit<\/td>\n<td>Handmatig linten of aparte tools ge\u00efntegreerd in je code editor<\/td>\n<td>ESLint en Prettier zijn ingebouwd in wp-scripts<\/td>\n<\/tr>\n<tr>\n<td>Unit testen<\/td>\n<td>Als het geen over het hoofd geziene stap is, is er meestal een aparte setup<\/td>\n<td>Het pakket integreert Jest testen<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Over het algemeen biedt <code>wp-scripts<\/code> meer flexibiliteit dankzij de integratie met tools die je misschien nog niet gebruikt. De moeite die het kost om <a href=\"https:\/\/postcss.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">PostCSS<\/a>, <a href=\"https:\/\/webpack.js.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">webpack<\/a> of <a href=\"https:\/\/jestjs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jest<\/a> in te stellen kan bijvoorbeeld iets zijn dat je overslaat vanwege tijdgebrek.<\/p>\n<h2>Hoe je je ontwikkelomgeving instelt om wp-scripts te integreren<\/h2>\n<p>Het gebruik van <code>wp-scripts<\/code> heeft zijn eigen vereisten, maar je gebruikt deze tools waarschijnlijk al. Als het nodig is, installeer dan <a href=\"https:\/\/kinsta.com\/nl\/blog\/node-js-installeren\/\">Node.js en npm<\/a> samen met een lokale WordPress ontwikkelomgeving. <a href=\"https:\/\/kinsta.com\/nl\/devkinsta\/\">DevKinsta<\/a> is een prima oplossing, omdat het op <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-docker\/\">Docker<\/a> draait en de testomgevingen van Kinsta ondersteunt.<\/p>\n<figure id=\"attachment_186952\" aria-describedby=\"caption-attachment-186952\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-186952 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/10\/devkinsta-interface.png\" alt=\"De DevKinsta interface toont site-informatie voor een WordPress website. Het bevat het type site, database type, webserver en PHP versie. De bovenkant van de interface toont knoppen voor Open site, Sync, Database manager en WP Admin. Aan de linkerkant wordt een klein voorbeeld van de website getoond. De onderkant van de interface heeft een gedeelte Site status met een knop Stop site.\" width=\"1200\" height=\"689\"><figcaption id=\"caption-attachment-186952\" class=\"wp-caption-text\">De hoofdinterface van DevKinsta.<\/figcaption><\/figure>\n<p>Als je het <code>create-block<\/code> pakket al gebruikt om <a href=\"https:\/\/kinsta.com\/nl\/blog\/gutenberg-blokken\/\">WordPress Block plugins te ontwikkelen<\/a>, dan installeer je <code>wp-scripts<\/code> naast de andere onderdelen. Vanaf hier kun je beginnen met het opzetten van een pakketontwikkelingsproject.<\/p>\n<h3>Een nieuw WordPress project opzetten met wp-scripts<\/h3>\n<p>Het werk dat je uitvoert vindt plaats in de <strong>wp-content<\/strong> directory van je WordPress installatie. De specifieke submap hangt samen met het type project dat je maakt: <strong>wp-content\/themes<\/strong> voor thema&#8217;s en <strong>wp-content\/plugins<\/strong> voor plugins!<\/p>\n<p>Hoe dan ook, je projectmap moet een aantal bestanden en mappen bevatten:<\/p>\n<ul>\n<li>Een <code>package.json<\/code> bestand.<\/li>\n<li>Een <strong>build <\/strong>map.<\/li>\n<li>Een <strong>src<\/strong> map die ook een <code>index.js<\/code> bestand bevat.<\/li>\n<\/ul>\n<p>Om een <code>package.json<\/code> bestand te maken, navigeer je naar je projectdirectory met behulp van je Terminal of commandoregel-applicatie. Het uitvoeren van het commando <code>npm init<\/code> leidt je door een interactief installatieproces en je &#8216;startpunt&#8217; zou <code>build\/index.js<\/code> moeten zijn:<\/p>\n<figure id=\"attachment_186953\" aria-describedby=\"caption-attachment-186953\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-186953 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/10\/npm-init.png\" alt=\"Een terminalvenster met een donkere achtergrond met de uitvoer van een npm init commando voor een WordPress themaproject. De tekst legt uit dat dit hulpprogramma de gebruiker zal begeleiden bij het maken van een package.json bestand, waarbij veelvoorkomende items worden behandeld en zinnige standaardwaarden worden voorgesteld. Het geeft instructies over hoe pakketten te installeren en ze op te slaan als dependencies. De terminal toont de initi\u00eble installatiedetails, inclusief de pakketnaam, versie, beschrijving en ingangspunt.\" width=\"1200\" height=\"420\"><figcaption id=\"caption-attachment-186953\" class=\"wp-caption-text\">Een gedeeltelijke doorloop van het npm init proces, met de waardeprompt van het invoerpunt.<\/figcaption><\/figure>\n<p>Installeer vervolgens <code>wp-scripts<\/code> als een ontwikkeling dependency:<\/p>\n<pre><code class=\"language-bash\">npm install @wordpress\/scripts --save-dev\n<\/code><\/pre>\n<p>Je zou ook een paar automatisch gegenereerde mappen en bestanden moeten zien: <strong>node_modules<\/strong> en <code>package-lock.json<\/code>. Hoe dan ook, je moet nu verwijzen naar de voorgedefinieerde scripts in het bestand <code>package.json<\/code>:<\/p>\n<pre><code class=\"language-json\">\"scripts\": {\n  \"build\": \"wp-scripts build\",\n  \"start\": \"wp-scripts start\",\n}\n<\/code><\/pre>\n<p>Je zult waarschijnlijk vaak naar dit bestand terugkeren om meer scripts toe te voegen wanneer dat nodig is. Bijvoorbeeld:<\/p>\n<pre><code class=\"language-json\">\u2026\n\n\"lint:js\": \"wp-scripts lint-js\",\n\"lint:css\": \"wp-scripts lint-style\",\n\"lint:pkg-json\": \"wp-scripts lint-pkg-json\",\n\"test\": \"wp-scripts test-unit-js\"\n\u2026\n<\/code><\/pre>\n<p>Het kan ook zijn dat <a href=\"https:\/\/developer.wordpress.org\/block-editor\/how-to-guides\/enqueueing-assets-in-the-editor\/\" target=\"_blank\" rel=\"noopener noreferrer\">je de assets van je thema of plugin hier moet enqueuen<\/a> en vervolgens je wijzigingen moet opslaan.<\/p>\n<h3>Webpack begrijpen en gebruiken met wp-scripts<\/h3>\n<p>Voor het bundelen van assets gebruikt <code>wp-scripts<\/code> webpack. Je hoeft dit niet te configureren, maar als je de rol van webpack begrijpt, kun je <code>wp-scripts<\/code> effectiever gebruiken. Webpack heeft veel verantwoordelijkheden bij het instellen:<\/p>\n<ul>\n<li>Het helpt bij het oplossen van dependencies tussen je JavaScript modules.<\/li>\n<li>Je kunt moderne JavaScript omzetten naar browser-compatibele code.<\/li>\n<li>Het helpt bij het verwerken en optimaliseren van je stijlen.<\/li>\n<li>Je kunt source maps genereren om gemakkelijker te debuggen.<\/li>\n<li>Het kan je helpen om productieklare, geminificeerde bundels te maken.<\/li>\n<\/ul>\n<p>Je hebt al een standaard webpack configuratie binnen <code>wp-scripts<\/code>. Dit werkt goed voor de meeste WordPress projecten. In sommige gevallen moet je echter custom configuraties maken.<\/p>\n<h3>Geavanceerde webpack configuratie voor bureaus<\/h3>\n<p>Hoewel de standaard webpack configuratie ideaal is voor de meeste ontwikkelprojecten, zijn er momenten waarop je een configuratie moet maken voor je specifieke behoeften. Je kunt bijvoorbeeld te maken hebben met complexe themastructuren of unieke plugin-architecturen. Dit is waar een <code>webpack.config.js<\/code> bestand in je project root van pas komt:<\/p>\n<pre><code class=\"language-js\">const defaultConfig = require(\"@wordpress\/scripts\/config\/webpack.config\");\n\nconst path = require('path');\n\n\nmodule.exports = {\n  ...defaultConfig,\n  entry: {\n    main: path.resolve(__dirname, 'src\/js\/main.js'),\n    admin: path.resolve(__dirname, 'src\/js\/admin.js'),\n    \/\/ Add more entry points as needed\n  },\n  output: {\n    filename: '[name].js',\n    path: path.resolve(__dirname, 'dist'),\n  },\n  \/\/ Add custom loaders or plugins here\n};\n<\/code><\/pre>\n<p>Deze configuratie maakt meerdere ingangspunten mogelijk, wat vooral handig is voor thema&#8217;s of plugins die aparte scripts vereisen voor verschillende delen van de WordPress admin of frontend. Zo kun je je standaardconfiguratie uitbreiden en de voordelen van <code>wp-scripts<\/code> behouden.<\/p>\n<h2>De basis van het gebruik van wp-scripts<\/h2>\n<p>Met een geschikte ontwikkelomgeving en de juiste bestands- en mappenstructuur kun je beginnen met het gebruik van <code>wp-scripts<\/code>. Er zijn een paar basis- en kerncommando&#8217;s die het grootste deel van je tijd in beslag zullen nemen.<\/p>\n<p>Het commando <code>start<\/code> controleert je bestanden op wijzigingen, compileert assets tijdens het ontwikkelen en biedt hot reloading voor een soepelere ontwikkelervaring:<\/p>\n<pre><code class=\"language-bash\">npm run start\n<\/code><\/pre>\n<p>Je gebruikt dit aan het begin van een project om een ontwikkelserver te starten, hoewel het de gecompileerde code in je <strong>build\/index.js<\/strong> bestand niet optimaliseert.<\/p>\n<p>Wanneer je je project moet deployen, zal het <code>build<\/code> commando je assets compileren voor productie:<\/p>\n<pre><code class=\"language-bash\">npm run build\n<\/code><\/pre>\n<p>Als je dit uitvoert, voert het een paar taken uit. Het transpileert bijvoorbeeld je JavaScript, compileert je Sass en SCSS naar CSS, minificeert al je assets en genereert <a href=\"https:\/\/web.dev\/articles\/source-maps\" target=\"_blank\" rel=\"noopener noreferrer\">source maps<\/a>. Aan het eind wordt alles uitgevoerd naar het <code>build\/index.js<\/code> bestand. Het bouwproces maakt ook een <code>build\/index.asset.php<\/code> bestand voor cache busting.<\/p>\n<p>Het <code>wp-scripts<\/code> pakket biedt ook verschillende linting commando&#8217;s om je te helpen de kwaliteit van je code hoog te houden:<\/p>\n<ul>\n<li><code>npm run lint:js<\/code>. Deze gebruik je om je JavaScript bestanden te linten.<\/li>\n<li><code>npm run lint:css<\/code>. Hiermee kun je je CSS- of Sass-bestanden linten.<\/li>\n<li><code>npm run lint:pkg-json<\/code>. Hiermee valideer je <code>package.json<\/code> bestand.<\/li>\n<\/ul>\n<p>Voor unit testen call je eenvoudig <code>npm run test<\/code>, die Jest gebruikt om je testsuite uit te voeren.<\/p>\n<h2>De kerntools van wp-scripts<\/h2>\n<p>Basic bouwtaken kunnen je veel tijd kosten en de typische commando&#8217;s vereisen veel automatisering. <code>wp-scripts<\/code> biedt echter een reeks geavanceerde hulpprogramma&#8217;s die voldoen aan de complexe behoeften van je WordPress ontwikkeling:<\/p>\n<ul>\n<li><strong>Geavanceerde compilatie.<\/strong> Met geoptimaliseerde configuraties kun je moderne JavaScript transpileren &#8211; inclusief ECMAScript Modules (ESM) en Javascript XML (JSX) &#8211; en Sass compileren.<\/li>\n<li><strong>Intelligent bundelen.<\/strong> Je kunt gebruik maken van webpack&#8217;s codesplitsing en <a href=\"https:\/\/webpack.js.org\/guides\/tree-shaking\/\" target=\"_blank\" rel=\"noopener noreferrer\">&#8217;tree shaking&#8217;<\/a> om de levering van bestanden te optimaliseren.<\/li>\n<li><strong>Uitgebreide linting.<\/strong> Je kunt coderingsstandaarden afdwingen voor JavaScript, CSS en <code>package.json<\/code> bestanden.<\/li>\n<li><strong>Ge\u00efntegreerd testen.<\/strong> Met Jest kun je eenheidstests en dekkingsrapporten uitvoeren.<\/li>\n<li><strong>Ontwikkelingsserver.<\/strong> Je kunt hot reloading gebruiken voor snelle ontwikkeling in meerdere projecten.<\/li>\n<\/ul>\n<p>Je kunt de standaardfunctionaliteit van elke server uitbreiden voor een meer aangepast WordPress ontwikkelproces, ongeacht of je aan thema&#8217;s of plugins werkt.<\/p>\n<h3>Omgaan met JSX en moderne JavaScript<\/h3>\n<p>Veel WordPress projecten werken met <a href=\"https:\/\/kinsta.com\/nl\/blog\/javascript-react\/\">moderne JavaScript elementen<\/a> zoals <a href=\"https:\/\/kinsta.com\/nl\/blog\/beste-react-tutorials\/\">React componenten<\/a>, pijlfuncties, destructurering, <code>async<\/code>\/<code>await<\/code> en meer. Zelfs aspecten van de kerncodebase, zoals de Block Editor, maken gebruik van moderne JavaScript om de functionaliteit te bouwen.<\/p>\n<p>Maar browsers begrijpen deze geavanceerde syntaxis niet van nature, dus is er meer werk nodig om ze te transporteren en te compileren.<\/p>\n<p>Met <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-jsx\/\">JSX<\/a> kun je HTML-achtige code schrijven binnen je JavaScript, waardoor het eenvoudiger is om te beschrijven hoe je interfaces en andere elementen eruit moeten zien. Dit kan om te beginnen de leesbaarheid en onderhoudbaarheid verbeteren. Je hebt ook toegang tot krachtige React-componenten voor het maken van dynamische gebruikersinterfaces (UI&#8217;s).<\/p>\n<p><code>wp-scripts<\/code> gebruikt de <a href=\"https:\/\/babeljs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Babel JavaScript compiler<\/a> om je moderne JavaScript en JSX om te zetten in code die browsers kunnen begrijpen. Het zorgt voor alle complexe en noodzakelijke configuratie, zodat jij je kunt richten op het schrijven van code.<\/p>\n<p>Je maakt hier gebruik van via je <code>src\/index.js<\/code> bestand. Bekijk dit kleine voorbeeld van hoe je JSX en modern JavaScript zou kunnen implementeren met <code>wp-scripts<\/code>:<\/p>\n<pre><code class=\"language-js\">import { render } from '@wordpress\/element';\n\n\/\/ Modern JavaScript feature: Arrow function\nconst HelloWorld = () =&gt; {\n    \/\/ Modern JavaScript feature: Template literal\n    const greeting = `Hello, ${wp.data.select('core\/editor').getCurrentPost().title}!`;    \n\n    \/\/ JSX\n    return (\n        &lt;div className=\"hello-world\"&gt;\n            &lt;h1&gt;{greeting}&lt;\/h1&gt;\n            &lt;p&gt;This is a React component in WordPress!&lt;\/p&gt;\n        &lt;\/div&gt;\n    );\n};\n\n\/\/ Modern JavaScript feature: Optional chaining\nconst rootElement = document.getElementById('hello-world-root');\nif (rootElement?.innerHTML) {\n    render(&lt;HelloWorld \/&gt;, rootElement);\n}\n<\/code><\/pre>\n<p>Je moet het script ook enqueue-en in het <strong>functions.php-bestand<\/strong> van je thema of in je hoofdplugin bestand:<\/p>\n<pre><code class=\"language-js\">function enqueue_hello_world_script() {\n    wp_enqueue_script(\n        'hello-world-script',\n        get_template_directory_uri() . '\/build\/index.js',\n        ['wp-element'],\n        filemtime(get_template_directory() . '\/build\/index.js'),\n        true\n    );\n}\n\nadd_action('wp_enqueue_scripts', 'enqueue_hello_world_script');<\/code><\/pre>\n<p>Zodra je het commando <code>npx wp-scripts build<\/code> uitvoert, zal <code>wp-scripts<\/code> je moderne JavaScript en JSX vertalen om een browser-compatibel <code>build\/index.js<\/code> bestand te maken.<\/p>\n<h3>Code kwaliteitscontroles en geavanceerde linting<\/h3>\n<p>Het <code>wp-scripts<\/code> pakket bevat verschillende tools om je te helpen kwaliteitscode te behouden en een consistente stijl in je projecten af te dwingen: Naast ESLint en Prettier heb je ook toegang tot <strong>stylelint<\/strong> voor CSS en SCSS linting.<\/p>\n<p>De eerste stap is het toevoegen van de linting scripts aan je <code>package.json<\/code> bestand:<\/p>\n<pre><code class=\"language-json\">\"scripts\": {\n  \"lint:js\": \"wp-scripts lint-js\",\n  \"lint:css\": \"wp-scripts lint-style\",\n  \"lint\": \"npm run lint:js && npm run lint:css\"\n}\n<\/code><\/pre>\n<p>Maak vervolgens custom configuratiebestanden in de hoofdmap van je project. ESLint vereist bijvoorbeeld dat je werkt binnen het bestand <code>.eslintrc.js<\/code>. Dit voorbeeld dwingt (gedeeltelijk) het gebruik van template-literals af voor strings in je JavaScript-code:<\/p>\n<pre><code class=\"language-js\">\u2026\nmodule.exports = {\n  extends: [\n    'plugin:@wordpress\/eslint-plugin\/recommended',\n  ],\n  rules: {\n    \/\/ Custom rules here\n    'no-console': 'error',\n    'react-hooks\/exhaustive-deps': 'warn',\n    'prefer-template': 'error',\n  },\n};\n\u2026\n<\/code><\/pre>\n<p>Voor stylelint bewerk je het bestand <code>.stylelintrc.js<\/code>:<\/p>\n<pre><code class=\"language-js\">\u2026\nmodule.exports = {\n  extends: [\n    '@wordpress\/stylelint-config\/scss',\n  ],\n  rules: {\n    \/\/ Custom rules here\n    'selector-class-pattern': '^[a-z]+(-[a-z]+)*$',\n    'max-nesting-depth': 3,\n  },\n};\n\u2026\n<\/code><\/pre>\n<p>Als je een grote codebase onderhoudt over meerdere projecten, is een consistente codestijl cruciaal. Op deze manier kun je de standaard ESLint en stylelint configuraties uitbreiden om de coderingsstandaarden van jouw bureau af te dwingen.<\/p>\n<p>Van hieruit kun je <code>npm run lint<\/code> uitvoeren om dit proces in gang te zetten, uitgebreid met het specifieke lintertype. Als je bijvoorbeeld code hebt die een typische concatenation bevat&#8230;<\/p>\n<pre><code class=\"language-js\">const name = \"World\";\nconsole.log(\"Hello \" + name + \"!\");\n<\/code><\/pre>\n<p>&#8230;zal <code>npm run lint:js<\/code> een fout aangeven en voorstellen om in plaats daarvan een literal template te gebruiken:<\/p>\n<pre><code class=\"language-js\">const name = \"World\";\nconsole.log(`Hello ${name}!`);\n<\/code><\/pre>\n<p>Dit is een fantastische manier om je WordPress thema of plugin code te linten en geeft je de ruimte om de rulesets aan te passen aan je specifieke behoeften en standaarden.<\/p>\n<h3>Unit testen<\/h3>\n<p>Unit testen is cruciaal om betrouwbaarheid en onderhoudbaarheid binnen je codebase te garanderen. De tools die <code>wp-scripts<\/code> gebruikt als testraamwerk is Jest.<\/p>\n<p>Wanneer je het commando <code>test<\/code> uitvoert, zoekt Jest naar bestanden met de extensies <code>.test.js<\/code> of <code>.spec.js<\/code>, of naar bestanden in een <strong>__tests__<\/strong> map. Het voert dan de tests uit die in deze bestanden zijn gedefinieerd en rapporteert de resultaten.<\/p>\n<p>Je moet eerst verwijzen naar het testscript in je <code>package.json<\/code> bestand:<\/p>\n<pre><code class=\"language-js\">\u2026\n\"scripts\": {\n  \"test\": \"wp-scripts test-unit-js\"\n}\n\u2026\n<\/code><\/pre>\n<p>Als dat nodig is, maak dan een bestand zoals <code>src\/utils.js<\/code>:<\/p>\n<pre><code class=\"language-js\">\u2026\nexport function capitalizeString(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function sum(a, b) {\n  return a + b;\n}\n\u2026\n<\/code><\/pre>\n<p>Maak van hieruit een testbestand, zoals <code>src\/__tests__\/utils.test.js<\/code>:<\/p>\n<pre><code class=\"language-js\">import { capitalizeString, sum } from '..\/utils';\n\ndescribe('capitalizeString', () =&gt; {\n  it('capitalizes the first letter of a string', () =&gt; {\n    expect(capitalizeString('hello')).toBe('Hello');\n  });\n  it('returns an empty string if given an empty string', () =&gt; {\n    expect(capitalizeString('')).toBe('');\n  });\n});\n\ndescribe('sum', () =&gt; {\n  it('adds two numbers correctly', () =&gt; {\n    expect(sum(2, 3)).toBe(5);\n  });\n  it('handles negative numbers', () =&gt; {\n    expect(sum(-1, 1)).toBe(0);\n  });\n});\n<\/code><\/pre>\n<p>Zodra je het commando <code>npm run test<\/code> uitvoert, zal <code>wp-scripts<\/code> automatisch alle bestanden met de extensie <strong>.test.js<\/strong> vinden en uitvoeren. Je kunt de standaard Jest configuratie ook uitbreiden om geavanceerde testbehoeften te ondersteunen, zoals testdekking:<\/p>\n<pre><code class=\"language-js\">\/\/ jest.config.js\nconst defaultConfig = require('@wordpress\/scripts\/config\/jest-unit.config');\nmodule.exports = {\n  ...defaultConfig,\n  setupFilesAfterEnv: ['&lt;rootDir&gt;\/tests\/setupTests.js'],\n  collectCoverageFrom: [\n    'src\/**\/*.js',\n    '!src\/tests\/**\/*.js',\n    '!src\/vendor\/**\/*.js',\n  ],\n  coverageThreshold: {\n    global: {\n      branches: 80,\n      functions: 80,\n      lines: 80,\n      statements: 80,\n    },\n  },\n};\n<\/code><\/pre>\n<p>Deze configuratie voegt een custom setup-bestand toe, specificeert bestanden om op te nemen in dekkingsrapporten en stelt dekkingsdrempels in om een uitgebreide testdekking te garanderen voor al je projecten. Wanneer je deze tests uitvoert, zal Jest output leveren die alle goed- en afkeurtests laat zien.<\/p>\n<p>Het uitbreiden van de mogelijkheden van je unit testen op deze manier kan de kwaliteit en betrouwbaarheid van je WordPress thema&#8217;s en plugins aanzienlijk verbeteren en je hele ontwikkelproces stroomlijnen.<\/p>\n<h2>Hoe je wp-scripts kunt integreren in je workflows<\/h2>\n<p>Het toepassingsgebied van het gebruik van wp-scripts is zo breed als je zelf wilt. Om dit te illustreren laten we een paar snelle benaderingen de revue passeren die je kunt gebruiken om <code>wp-scripts<\/code> te gebruiken om typische taken te automatiseren.<\/p>\n<h3>Herbruikbare project-templates maken<\/h3>\n<p>Je zult waarschijnlijk vaak nieuwe projecten moeten starten &#8211; misschien zelfs elke dag. Het maken van een custom project-template door <code>wp-scripts<\/code> vooraf te configureren kan je veel insteltijd besparen.<\/p>\n<p>Je kunt beginnen met een basisproject: een nieuw WordPress thema of plugin dat je <code>wp-scripts<\/code> setup bevat:<\/p>\n<pre><code class=\"language-bash\">mkdir my-agency-base-theme\ncd my-agency-base-theme\nnpm init -y\nnpm install --save-dev @wordpress\/scripts\n<\/code><\/pre>\n<p>Vervolgens stel je de projectstructuur in en maak je de benodigde mappen en bestanden aan:<\/p>\n<pre><code class=\"language-bash\">mkdir src build\ntouch src\/index.js src\/style.scss\ntouch functions.php style.css\n<\/code><\/pre>\n<p>Op dit punt configureer je <code>wp-scripts<\/code> en werk je het bestand <code>package.json<\/code> bij met relevante commando&#8217;s:<\/p>\n<pre><code class=\"language-js\">{\n  \"scripts\": {\n    \"build\": \"wp-scripts build\",\n    \"start\": \"wp-scripts start\",\n    \"lint:js\": \"wp-scripts lint-js\",\n    \"lint:css\": \"wp-scripts lint-style\",\n    \"test\": \"wp-scripts test-unit-js\"\n  }\n}\n<\/code><\/pre>\n<p>Je kunt dit uitbreiden om configuraties te maken voor webpack, ESLint en stylelint.<\/p>\n<p>Om dit een herbruikbaar template te maken dat eenvoudig toegankelijk is, is een <a href=\"https:\/\/kinsta.com\/blog\/what-is-github\/\">GitHub repo<\/a> ideaal. Overweeg bijvoorbeeld een remote origin van <code>https:\/\/github.com\/your-agency\/theme-template.git<\/code>.<\/p>\n<p>Als je een nieuw project begint, kun je een eenvoudig commando uitvoeren:<\/p>\n<pre><code class=\"language-bash\">npx create-wordpress-theme@latest my-new-theme --template your-agency\/theme-template\n<\/code><\/pre>\n<p>Hiermee kloon je je template-repo en stel je een nieuw thema in met je vooraf gedefinieerde <code>wp-scripts<\/code> configuratie.<\/p>\n<p>Je kunt de template verder aanpassen door bureau-specifieke boilerplate code toe te voegen, zoals veelgebruikte functies of componenten. Het is belangrijk om deze template-repository actueel te houden, de nieuwste versie <code>wp-scripts<\/code> te gebruiken en eventuele workflowverbeteringen te implementeren.<\/p>\n<h3>Versiebeheer en samenwerking<\/h3>\n<p>Je kunt meer doen als het gaat om <code>wp-scripts<\/code> en het werken met versiebeheer. Vaak moet je echter een aantal typische werkwijzen implementeren om ervoor te zorgen dat de kwaliteit van de code hoog blijft:<\/p>\n<ul>\n<li>Neem <code>package.json<\/code> en <code>package-lock.json<\/code> op in versiebeheer. Dit zorgt ervoor dat alle teamleden dezelfde dependencies gebruiken.<\/li>\n<li>Zorg ervoor dat je build artefacten zoals <strong>\/build<\/strong> en <strong>\/node_modules<\/strong> opneemt in je <code>.gitignore<\/code> bestand.<\/li>\n<li>Zorg ervoor dat je verwijst naar alle scripts die je nodig hebt in je <code>package.json<\/code> bestand voordat je het commit.<\/li>\n<li>Overweeg het gebruik van een <code>.nvmrc<\/code> bestand om de juiste Node.js versie voor je project te specificeren.<\/li>\n<\/ul>\n<p>Je zou ervoor kunnen kiezen om <a href=\"https:\/\/kinsta.com\/nl\/blog\/git-hooks\/\">pre-commit hooks<\/a> te implementeren met tools zoals <a href=\"https:\/\/typicode.github.io\/husky\/\">Husky<\/a>. Dit is een geweldige manier om een linter uit te voeren voor elke commit, om maar een voorbeeld te noemen:<\/p>\n<pre><code class=\"language-json\">\u2026\n\"husky\": {\n    \"hooks\": {\n        \"pre-commit\": \"npm run lint:js && npm run lint:css\"\n    }\n}\n\u2026\n<\/code><\/pre>\n<p>Op deze manier kun je ervoor zorgen dat je automatisch lint en tests uitvoert voor commits en pushes. Het is nog een manier om de kwaliteit van code in je team te handhaven.<\/p>\n<h3>Continue integratie en continue deployment (CI\/CD)<\/h3>\n<p>Het integreren van <code>wp-scripts<\/code> in je CI\/CD pijplijn kan je deployment proces stroomlijnen voor zowel thema&#8217;s als plugins. <a href=\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\">GitHub Actions<\/a> is slechts \u00e9\u00e9n manier om dit te integreren in je <code>wp-scripts<\/code> configuratie.<\/p>\n<p>De eerste stap is het maken van een speciaal workflow bestand in een <strong>workflows<\/strong> map van je repo:<\/p>\n<pre><code class=\"language-json\">name: CI\/CD\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions\/checkout@v2\n    - name: Use Node.js\n      uses: actions\/setup-node@v2\n      with:\n        node-version: '14'\n    - name: Cache dependencies\n      uses: actions\/cache@v2\n      with:\n        path: ~\/.npm\n        key: ${{ runner.OS }}-node-${{ hashFiles('**\/package-lock.json') }}\n    - name: Install dependencies\n      run: npm ci\n    - name: Run linters\n      run: |\n        npm run lint:js\n        npm run lint:css\n    - name: Run tests\n      run: npm run test\n    - name: Build\n      run: npm run build\n    - name: Deploy\n      if: github.ref == 'refs\/heads\/main'\n      run: |\n        # Add your deployment script here\n        # For example, using rsync to a remote server:\n        # rsync -avzc --delete .\/build\/ user@example.com:\/path\/to\/wp-content\/themes\/your-theme\/\n<\/code><\/pre>\n<p>De uitrolstap zal vari\u00ebren afhankelijk van je host. Je zou rsync kunnen gebruiken, integreren met diensten zoals <a href=\"https:\/\/www.deployhq.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">DeployHQ<\/a> of <a href=\"https:\/\/kinsta.com\/partners\/buddy\/\">Buddy<\/a>, of gaan voor een <a href=\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/#trigger-deployment-with-curl-in-cicd-pipeline\">eenvoudige cURL integratie<\/a>. Als je deployment wachtwoorden of sleutels vereist, dan moet je die als secrets toevoegen aan de instellingen van je GitHub repository.<\/p>\n<p>Deze workflow voert linters uit, test en bouwt je project op elk push en pull verzoek. Het beste van alles is dat het alleen uitrolt als je wijzigingen naar de hoofdbranch pusht.<\/p>\n<h3>Een custom command line interface (CLI) maken<\/h3>\n<p>Als je custom tools nodig hebt, kan <code>wp-scripts<\/code> helpen. Je zou bijvoorbeeld een aangepaste CLI tool kunnen implementeren die past bij de behoeften van je bureau.<\/p>\n<p>In sommige gevallen zal je tool dependencies nodig hebben:<\/p>\n<pre><code class=\"language-bash\">npm install @wordpress\/scripts commander chalk\n<\/code><\/pre>\n<p>Hier parst <a href=\"https:\/\/www.npmjs.com\/package\/commander\" target=\"_blank\" rel=\"noopener noreferrer\">Commander<\/a> commandoregelargumenten en verbetert <a href=\"https:\/\/www.npmjs.com\/package\/chalk\" target=\"_blank\" rel=\"noopener noreferrer\">chalk<\/a> de visuele weergave van de uitvoertekst.<\/p>\n<p>Vanaf hier kun je beginnen met het coderen van de tool door gebruik te maken van <code>wp-scripts<\/code>. Hier is een voorbeeld van hoe dat bestand eruit zou zien:<\/p>\n<pre><code class=\"language-js\">#!\/usr\/bin\/env node\nconst { program } = require('commander');\nconst { spawn } = require('child_process');\nconst path = require('path');\nconst chalk = require('chalk');\n\nconst wpScripts = path.resolve(__dirname, '.\/node_modules\/.bin\/wp-scripts');\n\nconst runWpScripts = (script, args) =&gt; {\n  console.log(chalk.blue(`Running wp-scripts ${script}...`));\n  const result = spawn(wpScripts, [script, ...args], { stdio: 'inherit' });\n  result.on('exit', (code) =&gt; {\n    if (code !== 0) {\n      console.log(chalk.red(`wp-scripts ${script} failed with code ${code}`));\n    }\n  });\n};\n\nprogram\n  .version('1.0.0')\n  .description('Custom WordPress development CLI for Agency XYZ');\n\nprogram\n  .command('build')\n  .description('Build the project')\n  .action(() =&gt; runWpScripts('build'));\n\nprogram\n  .command('start')\n  .description('Start the development server')\n  .action(() =&gt; runWpScripts('start'));\n\nprogram\n  .command('lint')\n  .description('Lint JavaScript and CSS files')\n  .action(() =&gt; {\n    runWpScripts('lint-js');\n    runWpScripts('lint-style');\n  });\n\nprogram\n  .command('test')\n  .description('Run unit tests')\n  .action(() =&gt; runWpScripts('test-unit-js'));\n\nprogram\n  .command('deploy')\n  .description('Deploy the project')\n  .action(() =&gt; {\n    console.log(chalk.green('Deploying project...'));\n    \/\/ Add your deployment logic here\n    \/\/ For example:\n    \/\/ spawn('rsync', ['-avz', 'build\/', 'user@server:\/path\/to\/wordpress\/wp-content\/themes\/your-theme\/']);\n  });\n\nprogram.parse(process.argv);\n<\/code><\/pre>\n<p>Door het bin veld toe te voegen aan je package.json bestand kun je van de CLI tool een executable maken:<\/p>\n<pre><code class=\"language-js\">\u2026\n{\n  \"name\": \"agency-wp-cli\",\n  \"version\": \"1.0.0\",\n  \"bin\": {\n    \"agency-wp\": \".\/cli.js\"\n  },\n  \/\/ ... other fields\n}\n\u2026\n<\/code><\/pre>\n<p>Om de CLI te koppelen voor een lokale installatie, kun je simpelweg <code>npm link<\/code> uitvoeren. Nu kun je de CLI testen in je Terminal app:<\/p>\n<pre><code class=\"language-bash\">agency-wp build\nagency-wp lint\nagency-wp deploy\n<\/code><\/pre>\n<p>Je moet de tool publiceren naar een priv\u00e9 npm register zodat andere teamleden het op hun gemak kunnen installeren:<\/p>\n<pre><code class=\"language-bash\">npm publish --registry=<a href=\"https:\/\/your-private-registry.com\">https:\/\/your-private-registry.com<\/a>\n<\/code><\/pre>\n<p>Als je het nodig hebt, hoef je alleen maar <code>npm install --save-dev agency-wp-cli<\/code> uit te voeren om je tool te installeren. Vanaf hier kun je verwijzen naar de CLI binnen <code>package.json<\/code>:<\/p>\n<pre><code class=\"language-js\">{\n  \"scripts\": {\n    \"build\": \"agency-wp build\",\n    \"start\": \"agency-wp start\",\n    \"lint\": \"agency-wp lint\",\n    \"test\": \"agency-wp test\",\n    \"deploy\": \"agency-wp deploy\"\n  }\n}\n<\/code><\/pre>\n<p>Het maken en gebruiken van een tool als deze zorgt ervoor dat iedereen in je bureau dezelfde commando&#8217;s en processen gebruikt. Dit kan inconsistenties verminderen en je WordPress ontwikkelingsworkflow nog verder stroomlijnen.<\/p>\n<h3>Prestatie-optimalisatie<\/h3>\n<p>Wanneer je meerdere drukbezochte WordPress sites beheert, wordt de optimalisatie van je prestaties cruciaal voor je levering. Er zijn verschillende geavanceerde technieken die <code>wp-scripts<\/code> je kan helpen implementeren.<\/p>\n<h4>Geavanceerd splitten van code<\/h4>\n<p>Met code splitting kun je bijvoorbeeld je JavaScript-bundel opdelen in kleinere brokken, die je op verzoek kunt laden. Dit kan je initi\u00eble laadtijden verbeteren, vooral voor grote applicaties.<\/p>\n<p>Pas eerst je <code>webpack.config.js<\/code> bestand aan om het splitten van code in te schakelen:<\/p>\n<pre><code class=\"language-js\">const defaultConfig = require('@wordpress\/scripts\/config\/webpack.config');\n\nmodule.exports = {\n  ...defaultConfig,\n  entry: {\n    main: '.\/src\/index.js',\n    admin: '.\/src\/admin.js',\n  },\n  output: {\n    filename: '[name].js',\n    chunkFilename: '[name].[contenthash].js',\n  },\n  optimization: {\n    ...defaultConfig.optimization,\n    splitChunks: {\n      chunks: 'all',\n      minSize: 0,\n      cacheGroups: {\n        vendor: {\n          test: \/[\\\/]node_modules[\\\/]\/,\n          name(module) {\n            const packageName = module.context.match(\/[\\\/]node_modules[\\\/](.*?)([\\\/]|$)\/)[1];\n            return `vendor.${packageName.replace('@', '')}`;\n          },\n        },\n      },\n    },\n  },\n};\n<\/code><\/pre>\n<p>Overal in je JavaScript code gebruik je dynamische imports om het op te splitsen in kleinere chunks:<\/p>\n<pre><code class=\"language-js\">\/\/ Instead of: import { heavyFunction } from '.\/heavyModule';\n\nbutton.addEventListener('click', () =&gt; {\n  import('.\/heavyModule').then(module =&gt; {\n    module.heavyFunction();\n  });\n});\n<\/code><\/pre>\n<p>Je moet ook elke splitsing enqueue-en binnen je WordPress-bestanden:<\/p>\n<pre><code class=\"language-php\">function enqueue_split_scripts() {\n  $asset_file = include(get_template_directory() . '\/build\/index.asset.php');  \n\n  wp_enqueue_script('main', get_template_directory_uri() . '\/build\/main.js', $asset_file['dependencies'], $asset_file['version'], true);\n  wp_enqueue_script('admin', get_template_directory_uri() . '\/build\/admin.js', $asset_file['dependencies'], $asset_file['version'], true);\n}\nadd_action('wp_enqueue_scripts', 'enqueue_split_scripts');\n<\/code><\/pre>\n<p>Dit zou je lagere laadtijden moeten geven en duurt ook niet al te lang om te implementeren.<\/p>\n<h4>Tree shaking<\/h4>\n<p>In de context van JavaScript is &#8217;tree shaking&#8217; hoe je ongebruikte code verwijdert. Zowel <code>wp-scripts<\/code> als <code>webpack<\/code> voeren tree shaking uit voor productie builds, maar je kunt het verder optimaliseren. De toepassing is complexer dan we hier geven, maar hoe dan ook, je wilt ervoor zorgen dat je ES6 import en export syntax gebruikt:<\/p>\n<pre><code class=\"language-php\">\/\/ Good for tree shaking\nexport function usedFunction() { \/* ... *\/ }\n\n\/\/ Bad for tree shaking\nmodule.exports = {\n  usedFunction: function() { \/* ... *\/ },\n};\n<\/code><\/pre>\n<p>Specificeer vervolgens die bestanden met <a href=\"https:\/\/travislramos.com\/blog\/understanding-tree-shaking-in-javascript\" target=\"_blank\" rel=\"noopener noreferrer\">&#8216;neveneffecten&#8217;<\/a>&#8230;<\/p>\n<pre><code class=\"language-js\">{\n  \"name\": \"your-package\",\n  \"sideEffects\": [\"*.css\", \"*.scss\"]\n}\n<\/code><\/pre>\n<p>&#8230;of markeer het als vrij van neveneffecten:<\/p>\n<pre><code class=\"language-json\">{\n  \"name\": \"your-package\",\n  \"sideEffects\": false\n}\n<\/code><\/pre>\n<p>Sommige grotere bibliotheken ondersteunen tree shaking niet, net als andere. In deze gevallen moet je een specifieke plugin gebruiken:<\/p>\n<pre><code class=\"language-bash\">npm install --save-dev babel-plugin-transform-imports\n<\/code><\/pre>\n<p>Dit betekent ook dat je je babel configuratiebestanden moet bijwerken voor de meest optimale en foutloze installatie.<\/p>\n<h4>Asset-optimalisatie<\/h4>\n<p>Het <code>wp-scripts<\/code> bouwproces minimaliseert CSS- en JavaScript-bestanden voor je, en je kunt dit nog verder doorvoeren. Je kunt bijvoorbeeld een specifieke plugin voor het optimaliseren van afbeeldingen installeren:<\/p>\n<pre><code class=\"language-bash\">npm install --save-dev imagemin-webpack-plugin\n<\/code><\/pre>\n<p>Zodra je deze toevoegt aan je webpack config bestand, kun je resource hints gebruiken door de juiste code toe te voegen aan je <code>functions.php<\/code> bestand of hoofd plugin bestand:<\/p>\n<pre><code class=\"language-php\">function add_resource_hints( $urls, $relation_type ) {\n  if ( 'preconnect' === $relation_type ) {\n    $urls[] = 'https:\/\/fonts.googleapis.com';\n    $urls[] = 'https:\/\/fonts.gstatic.com';\n  }\n  return $urls;\n}\n\nadd_filter( 'wp_resource_hints', 'add_resource_hints', 10, 2 );\n<\/code><\/pre>\n<p>Een taak als deze laat de flexibiliteit zien die je hebt met <code>wp-scripts<\/code>, voor zover je het kunt aanpassen aan de behoeften van je bureau of project.<\/p>\n<h4>Bundelgrootte analyseren<\/h4>\n<p>Inzicht in de samenstelling van je bundel is cruciaal voor optimalisatie. Met <code>wp-scripts<\/code> kun je het gemakkelijk maken met de <code>--analyze<\/code> flag.<\/p>\n<pre><code class=\"language-bash\">npm run build -- --analyze\n<\/code><\/pre>\n<p>De eerste stap is om het relevante script toe te voegen aan je <code>package.json<\/code> bestand:<\/p>\n<pre><code class=\"language-json\">{\n  \"scripts\": {\n    \"analyze\": \"wp-scripts build --analyze\"\n  }\n}\n<\/code><\/pre>\n<p>Als je het commando <code>analyze<\/code> uitvoert, genereert het een rapport dat de grootte van elke module in je bundel laat zien. Deze eenvoudige implementatie helpt je om gebieden voor optimalisatie te identificeren.<\/p>\n<h4>Kritieke CSS implementeren<\/h4>\n<p>De kritieke CSS van je site is het absolute minimum dat je pagina nodig heeft om inhoud boven de vouw te laden. Door deze CSS inline te plaatsen kun je de waargenomen laadtijd verbeteren.<\/p>\n<p>Om dit te bereiken heb je de <a href=\"https:\/\/www.npmjs.com\/package\/critical-css-webpack-plugin\" target=\"_blank\" rel=\"noopener noreferrer\">Critical CSS Webpack<\/a> plugin nodig:<\/p>\n<pre><code class=\"language-bash\">npm install --save-dev critical-css-webpack-plugin\n<\/code><\/pre>\n<p>De volgende taak is het bijwerken van je webpack config bestand om naar de plugin te verwijzen:<\/p>\n<pre><code class=\"language-js\">const CriticalCssPlugin = require('critical-css-webpack-plugin');\nconst defaultConfig = require('@wordpress\/scripts\/config\/webpack.config');\n\nmodule.exports = {\n  ...defaultConfig,\n  plugins: [\n    ...defaultConfig.plugins,\n    new CriticalCssPlugin({\n      base: 'dist\/',\n      src: 'index.html',\n      target: 'styles\/critical.css',\n      extract: true,\n      inline: true,\n      minify: true,\n      dimensions: [\n        {\n          height: 500,\n          width: 300,\n        },\n        {\n          height: 900,\n          width: 1300,\n        },\n      ],\n    }),\n  ],\n};\n<\/code><\/pre>\n<p>Om het te kunnen gebruiken, moet je een snippet toevoegen aan je <code>header.php<\/code> bestand:<\/p>\n<pre><code class=\"language-php\">&lt;style&gt;\n  &lt;?php echo file_get_contents(get_template_directory() . '\/build\/styles\/critical.css'); ?&gt;\n&lt;\/style&gt;\n<\/code><\/pre>\n<p>Dit haalt in wezen kritieke CSS eruit en inlineert deze voor een snellere eerste render. Het genereert kritieke CSS voor specifieke viewport-formats, wat de waargenomen laadtijd van je thema&#8217;s kan verbeteren.<\/p>\n<h2>Samenvatting<\/h2>\n<p>Voor de ontwikkeling van bureau kan <code>wp-scripts<\/code> een krachtig hulpmiddel zijn dat je workflow voor zowel thema- als plugin-projecten aanzienlijk kan verbeteren. Door een gestandaardiseerd bouwproces, moderne JavaScript ondersteuning en ge\u00efntegreerde tools voor testen en linten te bieden, kun je je met <code>wp-scripts<\/code> concentreren op het maken van WordPress projecten van hoge kwaliteit, terwijl je een aantal van de belangrijkste taken automatiseert.<\/p>\n<p>Het gebruik van <code>wp-scripts<\/code> helpt je niet alleen om bij te blijven met moderne ontwikkelpraktijken. Het is een manier om jezelf in de voorhoede van de WordPress ontwikkeling te positioneren, klaar om de uitdagingen en kansen aan te gaan waar jouw bureau mee te maken krijgt.<\/p>\n<p>Biedt wp-scripts de functionaliteit en reikwijdte die je nodig hebt voor de ontwikkelingsprojecten van je bureau? Deel je gedachten met ons in de comments hieronder!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Het ontwikkelen van WordPress als bureau kan best competitief zijn. Het vereist uiterste effici\u00ebntie en consistentie bij meerdere klantprojecten. Hoe doorgewinterd je ook bent als ontwikkelaar, &#8230;<\/p>\n","protected":false},"author":259,"featured_media":61325,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[951,892,898,906],"class_list":["post-61324","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-bureau","topic-wordpress-ontwikkeling","topic-wordpress-prestaties","topic-wordpress-websitedesign"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Geavanceerde WordPress ontwikkeling met wp-scripts<\/title>\n<meta name=\"description\" content=\"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress ontwikkeling voor gevorderden: hoe je je volgende project bouwt met wp-scripts\" \/>\n<meta property=\"og:description\" content=\"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-02T09:23:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-10T14:29:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"WordPress ontwikkeling voor gevorderden: hoe je je volgende project bouwt met wp-scripts\",\"datePublished\":\"2024-12-02T09:23:46+00:00\",\"dateModified\":\"2024-12-10T14:29:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/\"},\"wordCount\":3725,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/\",\"name\":\"Geavanceerde WordPress ontwikkeling met wp-scripts\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png\",\"datePublished\":\"2024-12-02T09:23:46+00:00\",\"dateModified\":\"2024-12-10T14:29:39+00:00\",\"description\":\"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress ontwikkeling\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WordPress ontwikkeling voor gevorderden: hoe je je volgende project bouwt met wp-scripts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Geavanceerde WordPress ontwikkeling met wp-scripts","description":"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/","og_locale":"nl_NL","og_type":"article","og_title":"WordPress ontwikkeling voor gevorderden: hoe je je volgende project bouwt met wp-scripts","og_description":"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!","og_url":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2024-12-02T09:23:46+00:00","article_modified_time":"2024-12-10T14:29:39+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package-1024x512.png","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Steve Bonisteel","Geschatte leestijd":"25 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"WordPress ontwikkeling voor gevorderden: hoe je je volgende project bouwt met wp-scripts","datePublished":"2024-12-02T09:23:46+00:00","dateModified":"2024-12-10T14:29:39+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/"},"wordCount":3725,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/","url":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/","name":"Geavanceerde WordPress ontwikkeling met wp-scripts","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png","datePublished":"2024-12-02T09:23:46+00:00","dateModified":"2024-12-10T14:29:39+00:00","description":"Voor de ontwikkeling van WordPress heb je eersteklas tools nodig. Deze post gaat in op het gebruik van wp-scripts plus technieken voor compilatie, linten, testen en meer!","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/12\/advanced-wordpress-development-with-the-wordpress-scripts-package.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/wp-scripts-ontwikkeling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"WordPress ontwikkeling","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/"},{"@type":"ListItem","position":3,"name":"WordPress ontwikkeling voor gevorderden: hoe je je volgende project bouwt met wp-scripts"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/nl\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/61324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=61324"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/61324\/revisions"}],"predecessor-version":[{"id":61411,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/61324\/revisions\/61411"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/61324\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/61325"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=61324"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=61324"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=61324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}