Ich habe ein Node.js-Projekt, für das Node Version 12 oder höher erforderlich ist. Gibt es eine Möglichkeit, dies in der Datei packages.json anzugeben, damit das Installationsprogramm die Benutzer automatisch überprüft und informiert, wenn sie ein Upgrade benötigen?
261
Antworten:
Ich denke, Sie können das Feld "Motoren" verwenden:
Da Sie sagen, dass Ihr Code mit niedrigeren Versionen definitiv nicht funktioniert, möchten Sie wahrscheinlich auch das Flag "engineStrict":
Die Dokumentation zur Datei package.json finden Sie auf der Website npmjs
Aktualisieren
engineStrict
ist jetzt veraltet, daher wird nur eine Warnung ausgegeben. Jetzt muss der Benutzer ausführen,npm config set engine-strict true
wenn er dies möchte.Update 2
Wie unten erwähnt, wird beim Erstellen einer
.npmrc
Datei im Stammverzeichnis Ihres Projekts (auf derselben Ebene wie Ihre Datei package.json) mit dem Textengine-strict=true
ein Fehler während der Installation erzwungen, wenn die Knotenversion nicht kompatibel ist.quelle
engineStrict
ist seit mehreren Monaten veraltet und erzeugt Warnungen, wenn sie verwendet wurde. Beginnend mit npm @ 3, dem Wert von Das Feld wird ignoriert, und Verstöße gegen die Engine führen nur zu Warnungen. Wenn Sie als Benutzer eine strikte Durchsetzung des Engines-Felds wünschen, führen Sie einfach npm config set engine-strict true aus. "cd .. && npm i <folder-name>
um nach dem Projekt selbst zu suchen. Dies wird jedoch einen ganzen Build in sich selbst auslösen.engine-strict=true
zu Ihrer .npmrc hat jetzt den gleichen EffektHinzufügen
zu
package.json
in die Datei
.npmrc
(in der Nähe despackage.json
gleichen Verzeichnisses)quelle
npm install
. arbeitet mityarn
als auchpackage.json
mit einem "Engines" -Abschnitt ähnlich dem oben (11.13.0
und6.7.0
) und einem.npmrc
mit nichts als dem oben angegebenen Inhalt eingerichtet. Ich hatte nvm mich auf eine ältere Knotenversion umstellen lassen und dann ausgeführtnpm install
, aber es installiert nur die Abhängigkeiten und erwähnt nicht einmal die Nichtübereinstimmung der Engine-Version.Genau wie gesagt, Ibam
engineStrict
ist jetzt veraltet. Aber ich habe diese Lösung gefunden:check-version.js:
package.json:
Weitere Informationen finden Sie hier: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
Und noch etwas. Eine Punktdatei '.nvmrc' kann verwendet werden, um eine bestimmte Knotenversion zu erfordern - https://github.com/creationix/nvm#nvmrc
Es wird jedoch nur von npm-Skripten (und Garnskripten) respektiert.
quelle
.nvmrc
Wenn Sie NVM wie dieses verwenden , was Sie wahrscheinlich sollten, können Sie die für ein bestimmtes Projekt erforderliche nodejs-Version in einer git-tracked-
.nvmrc
Datei angeben :Dies wird nicht automatisch wirksam
cd
, was vernünftig ist: Der Benutzer muss dann Folgendes ausführen:und jetzt wird diese Version des Knotens für die aktuelle Shell verwendet.
Sie können die Versionen des Knotens auflisten, mit denen Sie arbeiten:
.nvmrc
ist dokumentiert unter: https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrcEs
cd
wurde gefragt , wie diese Knotenversion automatisch ausgewählt werden soll : Automatisch auf die richtige Version des Knotens basierend auf dem Projekt wechselnGetestet mit NVM 0.33.11.
quelle
Es gibt einen anderen, einfacheren Weg, dies zu tun:
npm install Node@8
(speichert Knoten 8 als Abhängigkeit in package.json)Dies funktioniert, da
node
es sich nur um ein Paket handelt, das den Knoten als Paket-Binärdatei ausliefert. Es enthält nur node_module / .bin, was bedeutet, dass der Knoten nur für Paketskripte verfügbar ist. Nicht Hauptschale.Siehe Diskussion auf Twitter hier: https://twitter.com/housecor/status/962347301456015360
quelle
./node node-sass
und nicht nurnode-sass
. Ich bin mir nicht sicher, ob dies für alle .bin-Dateien gleich ist.Ein Mokka-Testfallbeispiel:
quelle