2017-07-26 33 views
6

Z tym samym repozytorium git, jeśli usunę node_modules i package-lock.json, moje oczekiwanie, że działa npm install powinien wygenerować takie same package-lock.json plik za każdym razem (lub dać kilka modułów, które mogą dostać aktualizowane przez wydawcę w międzyczasie.Dlaczego mam bardzo różne `pliki pakietów-lock.json` kiedy uruchomić` npm install` na różnych systemach

Co mi jest, że znalezienie się znacznie różnych plików w zależności od tego, czy mogę to zrobić na maszynie OSX a maszyna z Linuksem:

Czy można się tego spodziewać? Jeśli tak, to jaką wartość zatrzymanie pliku package-lock.json, ponieważ będzie ono nieprawidłowe na jednym z tych systemów. Jeśli nie, to co się tutaj dzieje?

+0

Istnieje OS specyficzne 'optionalDependencies' w wielu pakietach . Jednym z powszechnych, które widziałem, jest na przykład 'fsevents'. Z pewnością może to być ból w dupie. Zobacz https://github.com/npm/npm/issues/17722 – ceejayoz

+1

Tak ... wydaje się to istotne ... ale czy to nie znaczy, że popełnienie pliku jest całkowicie niewłaściwe, jeśli rozwijasz się na wielu platformach? Drzewo w systemie OSX nie powinno być stosowane do systemu Linux ... – Dancrumb

+3

Tak. Miałem lepsze wyniki z przędzą. – ceejayoz

Odpowiedz

2

Niektóre zależności można odinstalować na niektórych platformach. Niektóre z nich można zainstalować na komputerze z systemem OSX, ale nie na Linuksie. Dlatego za każdym razem wykonać npm i The package-lock.json jest aktualizowana

Na przykład, jak niektórzy inni użytkownicy wskazał, że jest to pakiet fsevents pakiet, który ma ścisły wymóg os

można znaleźć kilka otwartych kwestii na github:

https://github.com/npm/npm/issues/17722

https://github.com/npm/npm/issues/18202