Konfiguracja pliku package.json

Jeśli tworzysz aplikację Node.js z wieloma pakietami npm, nie rzadko występują ostrzeżenia lub błędy podczas kompilowania projektu, jeśli co najmniej jeden pakiet został zaktualizowany. Czasami wynik konfliktu wersji lub wersja pakietu została wycofana. Poniżej przedstawiono kilka szybkich wskazówek, które ułatwiają skonfigurowanie pliku package.json i zrozumienie, co się dzieje po wyświetleniu ostrzeżeń lub błędów. Nie jest to kompletny przewodnik po pliku package.json i koncentruje się tylko na wersji pakietów npm.

System przechowywania wersji pakietów npm ma ścisłe reguły. Format wersji jest następujący tutaj:

[major].[minor].[patch]

Załóżmy, że masz pakiet w aplikacji w wersji 5.2.1. Wersja główna to 5, wersja pomocnicza to 2, a poprawka to 1.

  • W aktualizacji wersji głównej pakiet zawiera nowe funkcje niezgodne z poprzednimi wersjami, czyli zmiany powodujące niezgodność.
  • W aktualizacji wersji pomocniczej nowe funkcje zostały dodane do pakietu, który jest do tyłu zgodny z wcześniejszymi wersjami pakietu.
  • W ramach aktualizacji poprawek uwzględniana jest co najmniej jedna poprawka usterek. Poprawki błędów są zawsze zgodne z poprzednimi wersjami.

Warto zauważyć, że niektóre funkcje pakietu npm mają zależności. Aby na przykład użyć nowej funkcji pakietu kompilatora TypeScript (ts-loader) z pakietem webpack, możliwe jest również zaktualizowanie pakietu npm pakietu webpack i pakietu webpack-cli.

Aby ułatwić zarządzanie przechowywaniem wersji pakietów, narzędzie npm obsługuje kilka notacji, których można użyć w pliku package.json. Te notacje umożliwiają kontrolowanie typu aktualizacji pakietów, które mają zostać zaakceptowane w aplikacji.

Załóżmy, że używasz platformy React i musisz dołączyć pakiet npm react i react-dom. Możesz określić, że na kilka sposobów w pliku package.json . Na przykład możesz określić użycie dokładnej wersji pakietu w następujący sposób.

"dependencies": {
  "react": "16.4.2",
  "react-dom": "16.4.2",
},

Korzystając z poprzedniej notacji, narzędzie npm będzie zawsze otrzymywać dokładną wersję określoną, 16.4.2.

Możesz użyć specjalnej notacji, aby ograniczyć aktualizacje aktualizacji do aktualizacji poprawek (poprawki błędów). W tym przykładzie:

"dependencies": {
  "react": "~16.4.2",
  "react-dom": "~16.4.2",
},

używasz znaku tyldy (~), aby poinformować narzędzie npm o zaktualizowaniu pakietu tylko w przypadku stosowania poprawek. Dlatego narzędzie npm może zaktualizować wersję 16.4.2 do wersji 16.4.3 (lub 16.4.4 itp.), ale nie zaakceptuje aktualizacji wersji głównej lub pomocniczej. Dlatego wersja 16.4.2 nie zostanie zaktualizowana do wersji 16.5.0.

Możesz również użyć symbolu karetki (^), aby określić, że narzędzie npm może zaktualizować numer wersji pomocniczej.

"dependencies": {
  "react": "^16.4.2",
  "react-dom": "^16.4.2",
},

Korzystając z tej notacji, npm może zaktualizować 16.4.2 do 16.5.0 (lub 16.5.1, 16.6.0 itp.), ale nie zaakceptuje aktualizacji wersji głównej. Dlatego wersja 16.4.2 nie zostanie zaktualizowana do wersji 17.0.0.

Podczas aktualizacji pakietów npm generuje on plik package-lock.json , który zawiera listę rzeczywistych wersji pakietów npm używanych w aplikacji, w tym wszystkich zagnieżdżonych pakietów. Plik package.json kontroluje bezpośrednie zależności aplikacji, ale nie kontroluje zagnieżdżonych zależności (inne pakiety npm wymagane przez określony pakiet npm). Możesz użyć pliku package-lock.json w cyklu programowania, jeśli musisz upewnić się, że inni deweloperzy i testerzy używają dokładnie używanych pakietów, w tym zagnieżdżonych pakietów. Aby uzyskać więcej informacji, zobacz package-lock.json w dokumentacji narzędzia npm.

W przypadku programu Visual Studio plik package-lock.json nie jest dodawany do projektu, ale można go znaleźć w folderze projektu.