Wir müssen den Karma-Testläufer in TeamCity integrieren und dafür möchte ich den Systemingenieuren ein kleines Skript (Powershell oder was auch immer) geben, das:
nimm die gewünschte Versionsnummer aus einer Konfigurationsdatei (ich denke, ich kann sie als Kommentar direkt in die
karma.conf.js
)Überprüfen Sie, ob die definierte Version von Karma Runner im globalen Repo von npm installiert ist
Wenn dies nicht der Fall ist oder die installierte Version älter als gewünscht ist: Nehmen Sie die richtige Version auf und installieren Sie sie
starte es:
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
Meine eigentliche Frage lautet also: "Wie kann man ein Skript einchecken, wenn die gewünschte Version des Pakets installiert ist?". Sollten Sie die Überprüfung durchführen, oder ist es sicher, npm -g install
jedes Mal anzurufen?
Ich möchte nicht immer die neueste verfügbare Version überprüfen und installieren, da andere Konfigurationswerte möglicherweise nicht mehr kompatibel sind
quelle
npm update
besonders mitnpm update -g
... es tut nicht das, was die meisten Peaole erwarten! Siehe: github.com/npm/npm/issues/6247 und gist.github.com/othiym23/4ac31155da23962afd0enpm -g update
ist die Wiederverwendung sicher. github.com/npm/npm/issues/6247#issuecomment-92182814As of [email protected], 'npm update' will change package.json to save the new version as the minimum required dependency
docs.npmjs.com/cli/update.htmlnpm outdated
identifiziert Pakete, die aktualisiert werden sollen, undnpm update <package name>
kann zum Aktualisieren jedes Pakets verwendet werden. Vor [email protected]npm update <package name>
werden jedoch die Versionen in Ihrer package.json nicht aktualisiert, was ein Problem darstellt.Der beste Workflow ist:
npm update
diese Option aus, um die neuesten Versionen jedes Pakets zu installierenSchauen Sie sich
npm-check-updates
an, um bei diesem Workflow zu helfen.npm-check-updates
um aufzulisten, welche Pakete veraltet sind (im Grunde dasselbe wie Ausführennpm outdated
)npm-check-updates -u
, um alle Versionen in Ihrer package.json zu aktualisieren (dies ist die magische Sauce).npm update
wie gewohnt aus, um die neuen Versionen Ihrer Pakete basierend auf der aktualisierten package.json zu installierenquelle
npm outdated
zeigt ALLE Pakete an .. auch in anderen Paketen .. aber diese werden mit diesem Verfahren nicht aktualisiert, so dass sie immer angezeigt werden .. Verwendennpm-check-updates
Sie also einfach (wie Sie es tatsächlich empfohlen haben), das nur Hauptpakete vonpackage.json
... anzeigt. Dies ist relevantnpm install --all-outdated
aber es ist nicht ...npm update --save package_name
, um die letzte Änderung in package.json zu speichern.npm update
welchen Unterschied zwischen beiden Befehlen besteht, dh gegennpm-check-updates
?Es gibt auch ein "frisches" Modul namens
npm-check
:Es bietet auch eine bequeme interaktive Möglichkeit, die Abhängigkeiten zu aktualisieren.
quelle
Ein einfacher Schritt:
$ npm i -g npm-check-updates && ncu -u && npm i
Das ist alles. Alle Paketversionen in
package.json
sind die neuesten Hauptversionen.Bearbeiten:
Was passiert hier?
quelle
ncu
steht für Node-Check-Updates und-a
ist die Option 'upgradeAll'. Hier finden Sie alle Optionen: npmjs.com/package/npm-check-updatesnpx -p npm-check-updates ncu -u
So aktualisieren Sie ein einzelnes lokales Paket:
Finden Sie zuerst Ihre veralteten Pakete heraus:
npm outdated
Aktualisieren Sie dann das Paket oder die Pakete, die Sie manuell möchten, wie folgt:
npm update --save package_name
Auf diese Weise ist es nicht erforderlich, Ihre lokale
package.json
Datei zu aktualisieren .Beachten Sie, dass dadurch Ihr Paket auf die neueste Version aktualisiert wird.
Wenn Sie eine Version in Ihre
package.json
Datei schreiben und Folgendes tun:npm update package_name
In diesem Fall erhalten Sie nur die nächste stabile Version (gesucht) bezüglich der Version, die Sie in Ihre
package.json
Datei geschrieben haben.Und mit
npm list (package_name)
können Sie die aktuelle Version Ihrer lokalen Pakete herausfinden.quelle
NPM-Befehle zum Aktualisieren oder Beheben von Schwachstellen in einigen Abhängigkeitsmanifestdateien
Verwenden Sie den folgenden Befehl, um veraltete oder Schwachstellen in Ihren Knotenmodulen zu überprüfen.
Wenn Schwachstellen gefunden wurden, verwenden Sie den folgenden Befehl, um alle Probleme zu beheben.
Wenn es bei Ihnen nicht funktioniert, versuchen Sie es
Wenn Sie Force Audit Fix nicht verwenden möchten, können Sie Ihre Abhängigkeitsversionen manuell korrigieren, indem Sie sie in den Dateien package-lock.json und package.json ändern . Dann renne
npm update && npm upgrade
quelle
Überprüfen Sie veraltete Pakete
Überprüfen Sie die zu aktualisierenden Pakete und wählen Sie sie aus
npm oudated img
npx npm-check -u img
quelle
Dieser Befehl führt keine zusätzlichen Pakete aus, um nur veraltete zu überprüfen und diejenigen zu aktualisieren, die vorhanden sind:
npm install $(npm outdated | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@latest' | xargs echo)
quelle
Bei der Installation von npm-Paketen (sowohl global als auch lokal) können Sie eine bestimmte Version definieren, indem Sie mithilfe der
@version
Syntax eine zu installierende Version definieren.Mit anderen Worten:
npm install -g [email protected]
Wenn Sie Folgendes tun, wird sichergestellt, dass nur 0.9.2 installiert ist, und es wird nicht neu installiert, wenn es bereits vorhanden ist.Als Ratschlag würde ich empfehlen, globale npm-Installationen zu vermeiden, wo immer Sie können. Vielen Menschen ist nicht klar, dass eine Abhängigkeit, die eine Bin-Datei definiert, unter ./node_modules/.bin/ installiert wird. Oft ist es sehr einfach, die lokale Version eines installierten Moduls zu verwenden, die in Ihrer package.json definiert ist. Tatsächlich fügen npm-Skripte die ./node_modules/.bin Ihrem Pfad hinzu.
Als Beispiel ist hier eine package.json, die beim Ausführen
npm install && npm test
die in meiner package.json definierte Version von Karma installiert und diese Version von Karma (installiert unter node_modules / .bin / karma) verwendet, wenn dastest
Skript ausgeführt wird:Dies gibt Ihnen den Vorteil, dass Ihre package.json die zu verwendende Karma-Version definiert und diese Konfiguration nicht global auf Ihrer CI-Box behalten muss.
quelle
test
Drehbuch? Können Sie mir bitte einen Hinweis geben, wie Sie es mit einem Skript installieren?npm test
. npm docs sind hier ziemlich gut: npmjs.org/doc/scripts.htmlAb [email protected]+ können Sie einfach Folgendes tun:
Dadurch wird die Datei automatisch aktualisiert
package.json
. Wir müssen die neueste Version nicht manuell aktualisieren und dann verwendennpm update <package name>
Sie können immer noch das alte Verhalten mit erhalten
( Referenz )
quelle
Um wirklich nur ein Paket zu aktualisieren, installieren Sie die NCU und führen Sie sie dann nur für dieses Paket aus. Dies wird auf den neuesten Stand gebracht.
quelle