webentwicklung-frage-antwort-db.com.de

Erstellen Sie mit "npm install --save" eine strikte Version zu package.json

Wenn Sie npm install --save somepackage ausführen, fügt es normalerweise etwas in package.json hinzu:

"dependencies": {
    "somepackage": "^2.1.0"
}

Da der Version ein Caret (^) vorangestellt ist, bedeutet dies, dass bei einer späteren Ausführung von npm install möglicherweise Version 2.3.0 stattdessen installiert wird. Dies kann aus ziemlich offensichtlichen Gründen unerwünscht sein. npm shrinkwrap ist nützlich, löst das Problem jedoch nicht wirklich.

Ich habe also einige Fragen:

  1. Kann bei der Installation eines Pakets angegeben werden, dass es in package.json auf eine bestimmte Version festgelegt werden soll (kein Caret vor der Versionsnummer)?
  2. Gibt es beim Veröffentlichen eines Pakets auf npm eine Möglichkeit, zu verhindern, dass das Caret vor der Version standardmäßig eingefügt wird, wenn andere Entwickler Ihr Paket installieren?
55
twiz

Um standardmäßig eine genaue Version anzugeben, können Sie Ihre npm-Konfiguration mit save-exact ändern:

npm config set save-exact true

Sie können die vorangestellte Version auch mit einer Tilde mit Save-Prefix angeben.

Nein, Sie können den Benutzer nicht zwingen, ein Update auf eine Minor- oder Patch-Version durchzuführen. NPM verwendet semver . Dies ist der empfohlene Weg, Pakete zu veröffentlichen.

89

Sie können das Standardverhalten mit der Option --save-exact ändern.

// npm
npm install --save --save-exact react

// yarn
yarn add --exact react

Ich habe einen Blogbeitrag darüber erstellt, wenn jemand in der Zukunft danach sucht.

https://www.dalejefferson.com/blog/wie-to-save-exact-npm-package-versions/

4
Dale Jefferson

Lauf:

npm install --save --save-exact [email protected]

Eine Antwort hinzufügen, um diesen Ratschlag leichter zu sehen.

0
Zanon