Wenn Sie ausführen npm install --save somepackage
, wird normalerweise so etwas in package.json hinzugefügt:
"dependencies": {
"somepackage": "^2.1.0"
}
Da der Version ein Caret (^) vorangestellt ist, bedeutet dies, dass bei einer späteren Ausführung npm install
möglicherweise stattdessen Version 2.3.0 installiert wird. Dies kann aus ziemlich offensichtlichen Gründen unerwünscht sein. npm shrinkwrap
ist nützlich, löst das Problem aber nicht wirklich.
Ich habe also mehrere Fragen:
- 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)?
- Gibt es eine Möglichkeit, beim Veröffentlichen eines Pakets auf npm zu verhindern, dass das Caret standardmäßig vor der Version eingefügt wird, wenn andere Entwickler Ihr Paket installieren?
quelle
--save-exact
es der Befehlszeile hinzufügen . ZB ,npm install --save --save-exact somepackage
.top level packges
- die in angegebenenpackage.json
, funktioniert jedoch nicht für Pakete, vontop level packages
denen abhängig ist. yarnpkg.com löst dieses Problem mit deryarn.lock
Datei, sodass Sie immer genaue Versionen aller Ihrer Pakete haben.Sie können das Standardverhalten mithilfe der
--save-exact
Option ändern .// npm npm install --save --save-exact react // yarn yarn add --exact react
Ich habe einen Blog-Beitrag darüber erstellt, wenn jemand in Zukunft danach sucht.
https://www.dalejefferson.com/blog/how-to-save-exact-npm-package-versions/
quelle
Lauf:
npm install --save --save-exact my-module@my-specific-version
Hinzufügen einer Antwort, um diesen Rat leichter verständlich zu machen .
quelle