Dla czytelnika : takontrolajakości dotyczy pola package.json bundledDependencies, a nie samego pakietu .
Co robią bundledDependencies
„BundledDependencies” jest dokładnie tym, co sugeruje ich nazwa. Zależności, które powinny znajdować się w Twoim projekcie. Więc funkcjonalność jest w zasadzie taka sama jak normalne zależności. Będą również spakowane podczas biegu npm pack
.
Kiedy ich używać
Zwykłe zależności są zwykle instalowane z rejestru npm. W ten sposób powiązane zależności są przydatne, gdy:
- chcesz ponownie użyć biblioteki innej firmy, która nie pochodzi z rejestru npm lub została zmodyfikowana
- chcesz ponownie wykorzystać własne projekty jako moduły
- chcesz rozpowszechniać niektóre pliki ze swoim modułem
W ten sposób nie musisz tworzyć (i utrzymywać) własnego repozytorium npm, ale uzyskasz te same korzyści, które otrzymujesz z pakietów npm.
Kiedy nie używać dołączonych zależności
Podczas programowania nie sądzę jednak, aby głównym celem było zapobieganie przypadkowym aktualizacjom. Mamy do tego lepsze narzędzia, a mianowicie repozytoria kodu (git, mercurial, svn ...) lub teraz pliki blokujące.
Aby przypiąć wersje pakietów, możesz użyć:
Opcja 1: Użyj nowszej wersji NPM 5, która jest dostarczana z węzłem 8. Używa package-lock.json
pliku (zobacz blog węzła i wydanie węzła 8)
Opcja 2: użyj przędzy zamiast npm
. Jest to menedżer pakietów z Facebooka, szybszy niż npm
i używa yarn.lock
pliku. W package.json
przeciwnym razie używa tego samego .
Jest to porównywalne z plikami blokującymi w innych menedżerach pakietów, takich jak Bundler lub Cargo. Jest podobny do npm-shrinkwrap.json npm, jednak nie jest stratny i tworzy powtarzalne wyniki.
npm
w rzeczywistości skopiował tę funkcję yarn
, między innymi.
- Opcja 3: to było wcześniej zalecane podejście, którego już nie polecam. Pomysł polegał na tym, aby używać przez
npm shrinkwrap
większość czasu, a czasami umieszczać całość, w tym folder node_module, w repozytorium kodu. Lub ewentualnie użyj shrinkpack . Najlepsze praktyki w tamtym czasie zostały omówione na blogu node.js oraz na radosnych witrynach deweloperskich .
Zobacz też
To trochę wykracza poza zakres pytania, ale chciałbym wspomnieć o ostatnim rodzaju zależności (o których wiem): zależności równorzędnych . Zobacz także to powiązane pytanie SO i prawdopodobnie dokumentację yarn
dotyczącą bundledDependencies .