Parcel bundler - Dev Web
Parcel bundler - Dev Web
Après quelques projets web montés avec webpack, je suis tombé sur parcel-bundler
grace à Grafikart.
C’est tellement plus simple ! Webpack est beaucoup trop compliqué à configurer. On passe plus de temps à peaufiner la conf qu’à écrire l’application.
En gros parcel-bundler
et vous êtes good to go pour dev en ECMAScript 6 et autres fioritures intéressantes dont on rafole en tant que dev web (build une distribution de prod minifié, un seul fichier css, js, etc.)
Si besoin de convertir en ES5 pour plus de compatibilité navigateur,il suffira d’installer le module babel. Voir les liens utiles. Grafikart montre ça très bien npm install -D babel-preset-env
et rajout du fichier .babelrc
.
Si vous installez parcel localement npm install -D parcel-bundler
, et que vous voulez l’exécuter en ligne de commande, le binaire parcel
est sous node_modules/.bin/parcel
(dans la clé “scripts” du package.json pas besoin de mettre le full path, npm “sait” qu’il faut aller chercher dans ./node_modules/.bin/)
Petit exemple
package.json
{
"name": "top100exportoracle",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "parcel build --public-url ./ index.html",
"dev": "parcel index.html",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-env": "^1.6.1",
"bootstrap": "^4.0.0",
"node-sass": "^4.7.2",
"parcel-bundler": "^1.6.2"
}
}
index.html
...
<link rel="stylesheet" href="./src/styles/index.scss">
...
<img src="./src/images/logo.png">
...
<script src="./src/js/index.js"></script>
src/index.js
(on se fiche du code, c’est juste pour montrer qu’on peut utiliser du code en ES6, importer des modules, des js, css, utiliser les classes, etc.)
class Stats{
constructor() {
this.rows = new Array()
this.orderby = ""
this.vue = "lastexec"
this.filters = {
'vtenvname': [],
'appsjobsstopdem': "",
'vtbegin-to': "",
'vtbegin-from': ""
}
...
...
}
import { getURLAPI } from './confidentials'
var urlAPI = getURLAPI()
let allStats = new Stats()
allStats.setTrHead()
// mise à jour du table header
let trTh = document.createElement("tr")
allStats.trHead.forEach((th, i) => {
trTh.innerHTML += "<th data-col='"+allStats.trHeadLastExecDataset[i]+"'>" + th + "</th>"
})
...
index.scss
@import "custom_bootstrap";
#maincontainer {
min-height: 800px;
border-radius: 0 0 10px 10px;
color: $purple;
}
#switchform,thead th {
cursor: pointer;
}
custom_bootstrap.scss
// on peut surdéfinir bootstrap ici
// violet chez nous
$purple: #691F75 !default;
@import "./../../node_modules/bootstrap/scss/bootstrap";
mon package.json ou à la main
"build": "./node_modules/.bin/parcel build --public-url ./ index.html",
"dev": "./node_modules/.bin/parcel index.html",
npm run build
npm run dev
THAT SIMPLE !
Liens utiles
site officiel Parcel avec la documentation
Excellente vidéo de Grafikart sur Parcel
Encore une vidéo de Grafikart afin d’appréhender les nouveautés ES6