Skip to content
This repository has been archived by the owner on Aug 7, 2023. It is now read-only.

Tech : passage à Parcel v2 #777

Merged
merged 3 commits into from
May 4, 2022
Merged

Tech : passage à Parcel v2 #777

merged 3 commits into from
May 4, 2022

Conversation

ronnix
Copy link
Collaborator

@ronnix ronnix commented Feb 15, 2021

https://github.com/parcel-bundler/parcel/releases/tag/v2.5.0

https://www.npmjs.com/package/parcel/v/2.5.0

Infos

Notes de migration

@ronnix ronnix changed the title Tentative de passer à Parcel v2 Tech : Tentative de passer à Parcel v2 Feb 16, 2021
@ronnix ronnix changed the title Tech : Tentative de passer à Parcel v2 Tech : tentative de passer à Parcel v2 Feb 16, 2021
@ronnix ronnix force-pushed the parcel-v2 branch 3 times, most recently from 2db741f to a0cc8b6 Compare February 19, 2021 11:57
@davidbgk
Copy link
Collaborator

Peut-être des choses à piocher ici https://www.tomspencer.dev/blog/2020/05/22/its-2020-lets-build-a-node.js-app-with-typescript/

@ronnix
Copy link
Collaborator Author

ronnix commented Feb 19, 2021

Il reste des problèmes que je ne sais pas trop résoudre quand le scope hoisting est activé...

@ronnix
Copy link
Collaborator Author

ronnix commented Apr 12, 2022

@davidbgk Suite à notre discussion j’ai refait une petite passe sur le service worker (c’était bien ça les 404) et la manière de contrôler le nommage des bundles.

@davidbgk
Copy link
Collaborator

Je viens de regarder et niveau perfs on est très sensiblement sur les mêmes valeurs 💪

@davidbgk
Copy link
Collaborator

Dans le log du build, j'ai deux choses qui m'interpellent :

Error: Bundles must have unique names

Et aussi le parcel-name-rewrite qui a l'air de renommer pas mal de choses (de manière redondante ?) :

parcel-namer-rewrite: Rewrite deplacements.HASHREFaaf496650d08cc0d.css -> mcc.css
parcel-namer-rewrite: Rewrite cas-contact-a-risque.HASHREF481344a99bc42863.css -> mcc.css
parcel-namer-rewrite: Rewrite deplacements.HASHREF4f48570d7b55e7a0.css -> mcc.css
parcel-namer-rewrite: Rewrite conseils-pour-les-jeunes.HASHREF8d43dc3673be63c0.js -> mcc.js

Est-ce que tu as le même comportement @ronnix ?

@ronnix
Copy link
Collaborator Author

ronnix commented Apr 14, 2022

Oui, je n'ai pas trop creusé ces logs. Mon impression intuitive était qu'un même fichier était peut être importé à plusieurs endroits, mais qu'à la fin ça se résolvait en un seul fichier.

@ronnix
Copy link
Collaborator Author

ronnix commented Apr 25, 2022

J’ai squashé les commits car sinon c’est chiant à rebaser, mais j’ai compilé toutes les notes dans le message.

Copy link
Collaborator

@davidbgk davidbgk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👏 🙇

ronnix added 3 commits May 4, 2022 16:19
https://github.com/parcel-bundler/parcel/releases/tag/v2.5.0

https://www.npmjs.com/package/parcel/v/2.5.0

== Notes de migration ==

- Par défaut, Parcel v2 utilise swc au lieu de Babel pour la transpilation

  Avantage : c’est plus rapide. Par contre, l’utilisation des tagged template litterals conduit à la génération de code qui déclenche une erreur dans terser (le minifieur) : parcel-bundler/parcel#7101

  On contourne le problème en écrivant différemment notre code pour échapper le nom du profil dans le HTML généré dynamiquement.

- Depuis la 2.4.0, Parcel utilise @parcel/css au lieu de PostCSS (cf. https://parceljs.org/blog/v2-4-0/)

- On met à jour les anciens plugins (changement d’API) :

  - on remplace le plugin [parcel-plugin-static-files-copy](https://www.npmjs.com/package/parcel-plugin-static-files-copy) par [parcel-reporter-static-files-copy](https://www.npmjs.com/package/parcel-reporter-static-files-copy)

  - on remplace [parcel-plugin-ogimage](https://www.npmjs.com/package/parcel-plugin-ogimage) par [parcel-optimizer-ogimage](https://www.npmjs.com/package/parcel-optimizer-ogimage)

  - on remplace [parcel-plugin-html-externals](https://www.npmjs.com/package/parcel-plugin-html-externals) par [parcel-resolver-ignore](https://www.npmjs.com/package/parcel-resolver-ignore)

  - on active le plugin standard `@parcel/resolver-glob` pour utiliser des imports `*` comme dans Parcel V1.

  - on remplace le plugin [parcel-plugin-sw-asset-urls](https://www.npmjs.com/package/parcel-plugin-sw-asset-urls) par le plugin standard `@parcel/service-worker` (ce qui évite de devoir maintenir à la main la liste de fichiers à mettre en cache)

- On s’assure que les noms des bundles soient mcc.XXX.(css|js)

  Les règles de nommage par défaut de Parcel utilisent l’arbre d’import pour déterminer quel est le nom du fichier racine : https://github.com/parcel-bundler/parcel/blob/v2/packages/namers/default/src/DefaultNamer.js

  Cela donne des noms un peu arbitraires pour les bundles CSS et JS.

  On utilise le plugin `parcel-namer-rewrite` pour forcer un nom plus explicite : https://www.npmjs.com/package/parcel-namer-rewrite

- On normalise les liens dans les fichiers sources :

  - lien absolu "/" pour aller vers la page d’accueil
  - lien relatif "toto.html" pour aller vers une autre page

  Note: des liens absolus seront bien générés par Parcel au final.

- On ajoute un lien vers le fichier `browserconfig.xml`

- On note que deux versions du JS sont générées :
  - une pour les navigateurs modernes capables de charger un script de type "module"
  - une option de repli pour les navigateurs plus anciens

  cf. https://parceljs.org/features/targets/#differential-bundling
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants