2016-12-14 5 views
0

Ich bin neugierig zu wissen, warum, wenn ich ein neues Aurelia-Projekt erstellen, jedes Projekt +600 node_modules installiert. Verständlicherweise nehmen die Module zusammen nicht viel Platz in Anspruch, aber sind alle diese Module notwendig? Ich hatte den Eindruck, dass Aurelias Ziel darin bestand, Entwicklern zu helfen, nicht mehr von Bibliotheken von Drittanbietern abhängig zu sein, so dass es seltsam erscheint, dass jedes Projekt mit einer riesigen Sammlung von Bibliotheken von Drittanbietern geliefert wird.Warum installiert Aurelia so viele Abhängigkeiten?

+2

90% dieser node_module sind Bauwerkzeuge. Obwohl sie nicht notwendig sind, sind sie da, um Ihnen das Leben zu erleichtern. –

Antwort

6

Meine Vermutung ist, dass Sie Ihr Projekt von CLI starten - die voreingestellt ist mit HTTP-Server, ES6/2015, SASS, Live-Nachladen und mehr.

Ich erstellte sauberes Aurelia-Projekt und schaute auf die package.json - es gab 5 Abhängigkeiten und 34 Dev-Abhängigkeiten. Die Verwendung aller oben genannten Tools ist in der heutigen JS-Webentwicklung ein Standard, und das Generieren von Projekten aus CLI reduziert den Zeitaufwand für die Einrichtung im Vorfeld. Alle diese Features kommen mit ihren eigenen Abhängigkeiten, und deshalb node_modules/ Ordner wächst schnell.

Die Quintessenz ist - Sie könnten neue Aureila Projekt mit viel weniger Abhängigkeiten starten. Auf ihrer Homepage finden Sie starter project mit nur drei. Das bedeutet aber auch, dass Sie nicht auf die meisten der heute verwendeten Tools zugreifen können.

Auch, und korrigieren Sie mich, wenn ich falsch liege, habe ich nicht den Eindruck, Aurelia jemals darauf abzielen, Entwickler von Third Party Bibliotheken und Modulen zu bewegen, nur um modern, schnell und unaufdringlich zu sein.

+0

Großartige und absolut richtige Antwort! –

+1

Ja, definitiv mit CLI. Meine Verwirrung mit meinem 3rd-Party-Statement kommt davon, Rob Eisenberg auf Hänsel Minutes zu hören und seinen Post [hier] zu lesen (http://eisenbergseffekt.bluespire.com/introducing-aurelia/). Ich bin neu in Aurelia, also war meine erste Reaktion, dass er sich auf Bibliotheken von Drittanbietern bezog, aber jetzt glaube ich, dass er meinte, dass das Kern-Aurelia-Framework keine Abhängigkeiten von Drittanbietern hat? –

5

Alle modernen Web-Frameworks verfügen über eine Vielzahl von Werkzeugen. Die Gründe in keiner bestimmten Reihenfolge -

1. Transpiling ESNext oder TypeScript - Wenn Sie in zukünftigen JavaScript schreiben möchten, aber es in allen Browsern funktioniert, benötigen Sie diesen Schritt. Sowohl das Babel- als auch das TypeScript-Werkzeug werden mit zusätzlichen Extras geliefert. Wenn Sie die Abdeckung sehen möchten (jeder tut), gibt es ein anderes Werkzeug.

2. Test - Komponententest und End-to-End-Test erfordern Test-Frameworks, Testlaufwerke, und wenn Sie wie oben schreiben möchten (esnext oder TypeScript), müssen Sie auch transpilieren.

3. Laden von Modulen/Bündelung - Require.js, JSPM/System.js, WebPack, etc ... werden verwendet, um Ihren Code zu ermöglichen, tatsächlich laufen im Browser. Ohne einen Modullader konnten Sie Ihren Code nicht in separate Dateien aufteilen. Ohne einen Bundler würden Sie viele zusätzliche Dateien in der Produktion laden.

4. Ihre Anwendung bedienen - Wenn Sie Ihre App lokal ausführen möchten, benötigen Sie eine Möglichkeit, diese aufzuspielen und auf Änderungen zu warten.

5. Debugging - Sie möchten debuggen? Jetzt müssen Sie die Datei debuggen, die an den Browser zurück an die ursprüngliche Quelle geliefert wird.

6. Linting - Fassen Sie Ihre Codebasis für Stilkonsistenzen zusammen.

Jedes dieser Pakete hat normalerweise seine eigenen Abhängigkeiten, und sie werden auch abgerissen.

Diese Konvention von kleinen Paketen, die einen einzigen Fokus haben, ist wohl besser als massive Pakete, die alles für Sie tun. Dies ermöglicht es Ihnen, ein Paket zu entfernen und es durch das zu ersetzen, das dasselbe tut, aber so, wie Sie es wollen.

Verwandte Themen