L’utilisation et la création de packages dans l’écosystème JavaScript est une réelle force et une source d'incroyables opportunités.
(comptage des modules par écosystème)
Malheureusement beaucoup n’arrivent pas à y voir l’émergence d’un pattern qui est de pouvoir segmenter des projets très simplement en différents modules qui seront bien plus facilement maintenables et testables sur long terme. La majorité des développeurs ne réalisent pas la puissance même du système de modules qu’ils ont entre les mains (et il n’est ici pas uniquement question d’open-source ou de npm).
C’est une des remarques que je fais le plus à mes clients en tant qu’Expert Node.js... Tout le monde a une tendance à construire par instinct des monolithes non-modulaire alors que par exemple les algorithmes en lien avec le métier peuvent être gérés au sein d’un module à part (ce genre de détails peut accélérer la productivité d’une équipe par un ratio de 5.. c’est du vécu).
Et il n’est pas question ici de nécessairement segmenter en 50 modules... 2 à 4 modules c’est déjà un bon début pour une équipe.
Si vous avez l’occasion ou une idée de packages alors je vous recommande fortement d’essayer l’aventure au moins une fois.
- EN Getting started NPM
- EN NodeSchool - How to NPM
- EN CJ Silverio, CTO of npm
- EN npm and the Future of JavaScript - Laurie Voss, npm, Inc.
- EN Radical Modularity - Aria Stewart, npm, Inc.
- EN Awesome npm
- EN Super Fast & Efficient Package Manager with Zoltan Kochan, PNPM Creator
Il est possible d’utiliser la commande npm link pour travailler avec des packages ou des modules qui ne sont pas encore publiés sur le registre npm.
Vous êtes débutant et vous voulez vous entraîner ? N’hésite pas à découvrir le workshop suivant qui est vraiment simple: EN How to npm
Il peut aussi être intéressant d’explorer la piste des monorepos et workspaces qui sont maintenant inclus par défaut sur yarn et npm 7. Il est aussi possible d’utiliser le package lerna.
C’est une solution très intéressante notamment pour n’avoir qu’un seul repo git mais tout en conservant l’avantage de la segmentation en modules/packages. Quelques liens pour vous documenter sur le sujet :
- EN Simplify your monorepo with npm 7 workspaces
- EN npm Workspaces (RFC)
- EN Workspaces in Yarn
- EN pnpm Workspace
- EN 🐉 A tool for managing JavaScript projects with multiple packages.
Je commence pour ma part à peine à les utiliser à travers différents projets, donc je compléterai la section au cours des prochains mois.
⬅️ 🐢 Node.js: 📟 CLI) | ➡️ 🐢 Node.js: 🔍 Debugging & Profiling