Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Node.js für ASP.NET-Entwickler

Der Node Package Manager

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Dieser Paketmanager wurde eigens für die JavaScript-Laufzeitumgebung Node.js entwickelt und kann in der Konsole über den Kurzbefehl "npm" aufgerufen werden. Er wird bei der Installation von Node.js bereitgestellt und ist direkt vergleichbar mit NuGet.

Transkript

In diesem Video beschäftigen wir uns mit dem Node Package Manager und zwar ist der Node Package Manager ein Paketmanager, der eben für die JavaScript Laufzeitumgebung Node.js entwickelt wurde und würde dann direkt eben in der Konsole mit dem Kurzbefehl "npm" aufgerufen und dieser wird eben automatisch bei der Node.js-Installation mit zur Verfügung gestellt und ist exakt vergleichbar mit NuGet, was man aus .NET kennt. Interessanterweise, wenn man allerdings beide Welten vergleicht, dass man muss dazu sagen, NuGet hat sich an "npm" angelehnt, das heißt, die sind erst nach "npm" auf dem Markt gekommen und das merkt man dann eben auch an den Zahlen, dass "npm" hier eine viel größere Community hat, viel mehr zur Verfügung stellt, als was man unter .NET bekommen kann, und zwar sind Ende Januar 2016 ungefähr 236 209 Pakete und Ende Januar 2016 bei NuGet nur 49 781 Pakete. Das heißt, bevor man natürlich hier irgendwo das Rad neu erfindet, kann man erst mal auf der npm-Website npmjs.com sich erstmal schlau machen, ob da nicht sogar schon irgendwo ein Modul gibt zu der Aufgabe, die man gerne erfüllt haben möchte und so wie man es eigentlich eben auch bei NuGet macht, dass man sich erst mal schlau macht. Wie arbeitet dann "npm"? Erstmal gibt es passend, dann für sein eigenes Webprojekt eine sogenannte Package.json-Datei, das heißt, das ist dann die Konfigurationsdatei, die die wichtigsten Metadaten zu dem eigenen Projekt enthalten, das heißt, den Namen, die Version, die Beschreibung, und die ist zum Beispiel auch wichtig für zwei Dinge. Einmal kann man dann sein eigenes Projekt als Modul auf "npm" veröffentlichen, oder es dient eben auch dazu, dass man hier in den Metadaten festhält, welche Module für das eigene Projekt installiert wurden. Das sehen wir etwas später. Und dank diesem Package.json wird die Arbeit im Team und beim Veröffentlichen enorm vereinfacht, und es können unterschiedliche Skripte zum Beispiel auch noch innerhalb dieser Package.json hinterlegt werden, zum Beispiel zum Testen oder bestimmte Tasks, die dann ausgeführt werden sollen. Und wie bereits gesagt, installierte Module können hier registriert werden. Und dass diese Package.json einmalig angelegt wird, dazu ruft man dann in der Konsole einmal "npm init" auf. Nicht dass ich es jetzt einmal in Visual Studio Code demonstrieren kann, haben wir jetzt hier noch keine Package.json. Wir haben jetzt hier noch ein ganz frisches Projekt. Wenn ich jetzt hier in der Konsole zum Beispiel "npm init" eingebe, werde ich hier noch einmal gefragt, also erst mal sagt er "HelloNode". Man muss hier in Modul immer klein schreiben und zusammen schreiben ohne Sonderzeichen. Version 1.0 ist okay, Beschreibung würde ich jetzt keine hinzufügen. Der Einstiegspunkt wäre hier die "app.js", das ist ganz genau richtig, also ich muss ja nichts zusätzlich eingeben. "repository" gibt es gerade nicht, "author", das bin ich, Gregor Biswanger. "licence" ist "MIT", und dann werde ich am Schluss gefragt, ob das richtig ist, was er da zusammengestellt hat. "Yes", das passt, und schon haben wir automatisch unsere Package.json. Natürlich könnte ich das Ganze auch händisch eintragen, ohne dass das Ganze jetzt in der Konsole eintippe, aber wir haben ja gerade gesehen, dieser integrierte Wizard der erleichtert einem schon das Leben. Wie kann man zum Beispiel die Pakete finden? Also einmal auch über die Webseite, wie ich bereits gezeigt habe oder man gibt in der Konsole "npm search" ein und dann dementsprechend, was man ungefähr suchen möchte, und ein Paket installieren. Das funktioniert folgendermaßen: Erst mal durch "npm install" und dann gibt man einfach den Paketnamen mit. Das reicht vollkommen aus und das Schöne ist, es muss auch nicht direkt alles bei bei "npm" auf dem Server gehostet werden. Das heißt, es kann ja auch sein, dass man eigene Module innerhalb, im Unternehmen, erzeugt. Das heißt, das kann man dann auf einem eigenen File-Server legen, und dann gibt man ein "npm install", und den gibt man man direkt in File-Server, Pfad mit an, und das funktioniert ebenfalls . Was passiert dann automatisch? Es wird dann ein neues Standardverzeichnis erzeugt mit Node-Modul und den kann man dann eben mit "require" ganz schön aufrufen. Auch das will ich kurz demonstrieren. Wir wechseln wieder zu Visual Studio Code, gehe in die Konsole und schreibe "npm install json2 ts" Das ist ein Modul, das habe ich selber entwickelt, ist Open Source, und liegt eben auf "npm", auf dem Server. Und jetzt ist es aber wichtig, dass ich zusätzlich "--save" schreibe. Nur dann wird das auch wirklich in diese Package.json mit aufgenommen. Jetzt ist das Ganze installiert. Wenn ich jetzt zurück wechsle, sehen wir es ist ein neuer Eintrag vorhanden Unter Abhängigkeiten mit "dependencies" "json2ts" in Version 0.0.7 und ein neuer Ordner ist angelegt worden "node_modules". Das sehen wir, dann ist mein Modul, das ich geschrieben habe, jetzt hier installiert worden, und auch abhängige Module, die mein Modul benötigt, werden hier ebenfalls automatisch mitinstalliert. Das sorgt dann später für etwas Chaos. Das heißt, deswegen eigentlich hat man hier in diesem Nodemodulsordner dann auch gar nichts mehr zu suchen. Man nutzt eben dann nur noch diese installierten Module mittels "require". Es gibt allerdings eben auch Module, die man nur zur Entwicklungslaufzeit braucht und die nicht für den Produktiveinsatz relevant sind. In dem Fall schreibt man dann, also ich benutze hier zum Beispiel "jasmine node". Jasmine ist ein Unit-Test Framework für JavaScript. Jetzt schreibe ich hier "-def". Zusätzlich dazu, das bedeutet das brauche ich nur während der Entwicklung dieses Moduls. Das ist später nicht relevant, dass es auf dem Server läuft. Und wir kriegen einen weiteren Eintrag in unsere "json" unter "defDependencies". Das Besondere ist, wenn ich jetzt das Ganze in eine Versionsverwaltung mit aufnehme, kann ich sagen, dass bitte dieses Nodemodulsverzeichnis ignoriert werden soll. Das macht natürlich die Versionsverwaltung schlanker, die Daten übertragen ist um einiges schneller und man kommt auch nicht in den Konflikt, falls irgendeiner der Kollegen eine ältere oder neuere Datei mithinzufügt et cetera, und das macht es natürlich sehr angenehm. Man sollte dennoch immer eine Schattenkopie einmalig haben von den Modemoduls, dass man sich nicht komplett abhängig macht von dem npm-Server. Aber wenn man sich das Ganze mal anschaut im Explorer, dann haben wir hier schon, ja vier Megabyte dafür, dass ich eigentlich da noch nicht wirklich viele installiert habe und das kann man sich sparen. Später sind das mehrere hundert Megabyte, die man sich sparen kann. Genau, wie bereits gesagt einfach ein "save" oder save def" hinzufügen, und unbedingt dann bei der Versionsverwaltung unter zum Beispiel bei der Versionsverwaltung git, bei der .ignoregit-Datei sollte dann das Verzeichnisnodemodul hinzugefügt werden. Wenn man dann eben aus der Versionsverwaltung alles frisch zieht dann fehlt ja eben dieses Verzeichnis und die installierten Module. Und da gibt es dann ganz einfachen Befehl. Man muss dann nämlich nur noch "npm install" schreiben. Mehr nicht und es wird automatisch alles was im Package.json steht, einmalig installiert. In dem Fall hat er jetzt einfach noch mal alles installiert, was bei mir im Package.json stand. Und Regeln zur Paketversionierung, das heißt, man sieht ja schon, dass hier eben nur dann immer so witzige Zeichen vorne mit angegeben worden sind und zwar kann man hier Regeln mitgeben. Das bedeutet, man kann, wenn kein Sonderzeichen dabei steht, sagt man, man besteht darauf, dass wirklich immer nur fix diese eine Version verwendet wird oder dass man alles, was kleiner oder gleich der definierten Version ist, das automatisch gezogen werden soll, oder alles was auch höher ist, bis hin zu Hauptversion oder Minor Versionen et cetera. Registrierte Pakete kann man sich mit npm-List anzeigen lassen. Vor allem wenn man auch etwas zum Beispiel global installiert. Das ist auch noch so ein Punkt das heißt, ich möchte zum Beispiel nicht in mein Projekt etwas installieren und bereitstellen, sondern für alle Projekte und egal wo ich bin. In dem Fall wäre das ja "npm install" und so was, was man immer wieder braucht, wäre ja eben TypeScript. Und TypeScript möchte ich für jedes Projekt, also "-global". Dann wird es in mein Roaming-Profil in einem Unterverzeichnis installiert. Paketinfos bekommt man mit "npm info Paketname" Registrierte Pakete installieren, das haben wir gerade schon gesehen, einfach "npm install" ausführen und für die "defDependencies" wird zusätzlich "-production" geschrieben. Dann wird das installiert. Das mit der globalen Definition haben wir gerade auch kennengelernt. Hier wird automatisch im Roaming Profile unter "npm node moduls" dann installiert und man kann dann von dort aus immer schön drauf zugreifen. Wir haben in dem Video gesehen, was sich hinter dem Node Package Manager verbirgt und was es da für wichtige Funktionen gibt, um damit arbeiten zu können.

Node.js für ASP.NET-Entwickler

Sehen Sie, wie Sie den Umstieg auf auf native JavaScript-Entiwcklung mit Node.js erfolgreich meistern.

2 Std. 52 min (31 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:15.05.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!