So viele Webprojekte verwenden npm, um ihre Abhängigkeiten für das Frontend und Backend zu beziehen. npm install und schon werden Tausende von Dateien in einen node_modules Ordner in unseren Projekten geladen, um etwas zu importieren/requiren. Es ist ein wichtiges Rädchen in der großen Maschine der Webentwicklung.
Obwohl ich nicht glaube, dass das npm-Repository jemals ernsthaft herausgefordert wurde, steht die Technologie darum herum regelmäßig im Wettbewerb. Yarn hat sich eine Zeit lang definitiv durchgesetzt. Yarn hatte Lockfiles, die uns halfen sicherzustellen, dass unsere Mitentwickler und Umgebungen exakt dieselben Versionen von Dingen hatten, was außerordentlich vorteilhaft war. Es hat auch einige Hintergrundmagie vollbracht, die es sehr schnell machte. Seitdem hat npm auch Lockfiles und Gerüchten zufolge ist es genauso schnell, wenn nicht sogar schneller.
Ich weiß nicht genug, um Ihnen in die eine oder andere Richtung raten zu können, aber ich finde es faszinierend, dass eine weitere nächste Generation von npm-Download-Dingern im Anmarsch ist.
- pnpm konzentriert sich auf Geschwindigkeit und Effizienz beim Ausführen mehrerer Projekte: „Eine Version eines Pakets wird nur einmal auf der Festplatte gespeichert.“
- Turbo ist für die direkte Ausführung im Browser konzipiert.
- Pikas Ziel ist es, dass Sie nach dem Herunterladen aller Abhängigkeiten nicht gezwungen sein sollten, einen Bundler zu verwenden, und ES6-Imports verwenden können sollten, wenn Sie möchten. UNPKG wird manchmal auch auf diese Weise verwendet, indem es URLs zu Paketen liefert, die direkt von npm bezogen werden, und über eine experimentelle
?moduleFunktion verfügt, um ES6-Imports direkt zu verwenden. - Sogar npm ist dabei! tink ist ihr Ansatz dazu, selbst Node.js aus der Gleichung zu eliminieren und Abhängigkeiten sowohl
importieren als auchrequiren zu können, ohne überhaupt einnode_modulesVerzeichnis zu haben.
Die Idee hinter
pnpmgefiel mir wirklich gut, aber ich musste sie wieder aufgeben, weil nicht alle Abhängigkeiten korrekt verlinkt wurden. Zum Beispiel, wenn ichnpmx create-react-app y-appausführe, wird der node_modules Ordner sehr schnell erstellt, da alle Dateien bereits heruntergeladen waren und die Idee, dieselben Dateien nicht erneut auf meiner Festplatte zu haben, sondern nur einen Symlink zum Originalpaket, gefiel mir gut. Aber als ich den Server starten musste, sagte er, dass eine Reihe von Abhängigkeiten fehlten, und ich war traurig, dass ich ihn aufgeben musste.Danke für das Teilen des pnpm-Songs. Er gefällt mir auch..
Yarn arbeitet auch an einem „pnp“-Modus, ähnlich wie tink
Ich habe mich mit der Verwendung eines Monorepos beschäftigt und Lerna und Yarn Workspaces verwendet, um Repository-Abhängigkeiten auf Root-Ebene zu verwalten. „Kind“-Anwendungen/Pakete installieren nur ihre eigenen Abhängigkeiten, wenn sie sich von denen des Roots unterscheiden (dies kann unterschiedliche Pakete oder nur eine andere Version bedeuten).
Als Teil dieser „Entdeckungsreise“ stellte ich fest, dass
yarnviel schneller ist alsnpm install, insbesondere beim Einrichten einer CI-Build-Pipeline. Ungefähr 25 % schneller.Dies gilt für ein Monorepo, das 3 Create React Apps (V2) enthält, von denen eine eine Storybook-Bibliothek ist, während die anderen beiden diese Bibliothek konsumieren.