Det lyder jo godt. Men det lyder som det, Gulp allerede hjælper med? Eller hvad? Gulps mission statement er dog en smule anderledes og spænder bredere:
A toolkit to automate & enhance your workflow.
Leverage gulp and the flexibility of JavaScript to automate slow, repetitive workflows and compose them into efficient build pipelines.
Gulp hjælper med at automatisere, så du ikke selv skal køre babel efterfulgt af sass på kommandolinjen.
Så nej, Parcel kan ikke erstatte Gulp fuldstændigt. De to værktøjer forsøger fundamentalt ikke at gøre det samme.
Det Parcel kan erstatte er de 80% af tiden, hvor vores eneste job er at transpilere JavaScript og SASS til CSS. Så kan Parcel også en masse andet - men det kan du læse mere om i deres egen dokumentation.
Her kommer et eksempel
{
"scripts": {
"build": "parcel build './src/**/*.(js|scss)' --dist-dir './dist'",
"watch": "parcel watch './src/**/*.(js|scss)' --dist-dir './dist' --no-hmr"
},
"devDependencies": {
"@parcel/transformer-sass": "^2.0.0-beta.2",
"parcel": "^2.0.0-beta.2"
}
}
Ovenstående indsætter du i din package.json fil, og derefter er du klar til at køre npm install.
Lad os lige gennemgå build kommandoen.
"build": "parcel build './src/**/*.(js|scss)' --dist-dir './dist'",
Her beder vi Parcel om at kigge i vores src/ mappe og transpile alle de filer Parcel finder og smide dem ned i dist/ mappen.
Det sker for både vores js og scss filer som angivet i glob mønsteret.
For at vi ikke skal blive ved med at køre npm run build hele tiden, har vi også watch kommandoen.
Den sørger for at transpileringen sker hver gang, vi foretager en ændring i vores src/ .js og .scss filer.
Det sluttelige --no-hmr flag vi smider på watch kommandoen, betyder Hot Module Replacement.
Det er en funktion vi ikke har mulighed for at benytte os af i sammenspil med vores nuværende Drupal 9
opsætning. Så vi vælger at fjerne funktionen for at afkomplicere vores opsætning.
Det sidste vi kan vælge at tilføje til vores package.json, er en browserlist defination.
{
"scripts": {
"build": "parcel build './src/**/*.(js|scss)' --dist-dir './dist'",
"watch": "parcel build './src/**/*.(js|scss)' --dist-dir './dist' --no-hmr"
},
"devDependencies": {
"@parcel/transformer-sass": "^2.0.0-beta.2",
"parcel": "^2.0.0-beta.2"
},
"browserslist": ["> 0.2%", "not dead"]
}
På den måde kan vi fortælle Parcel, hvor vores js og SCSS forventes at blive afviklet og transpilere koden til et niveau, der ikke er for verbøst, men samtidig kan køre i de pågældende browsere.
~10 linjers konfiguration/kommandoer løser i størstedelen af tilfældene de udfordringer, vi har.
Gulp er et fantastisk værktøj, men engang imellem kan man nøjes med et lidt mindre værktøjsbælte.