Npm 7 beta z obszarami roboczymi dostępny

Opublikowaną nową wersję beta npm 7. Na oficjalnym blogu npm opisano wszystkie zmiany, jakie wprowadzono w wydaniu. Wśród nowości są automatycznie instalowane peer deps oraz workspaces. Twórcy przepisali także wnętrzności, w tym cały sposób budowania grafu zależności. W wersji beta nie ma również dodatkowych metadanych dorzucanych do `package.json` oraz domyślnego placeholdera dla `npm test`. Ponadto przez wyrzucenie metadanych zależnych od systemu, paczki tworzone przez `npm pack` są bardziej reprodukowalne.
Zależności rówieśnicze
Jedną z ważniejszych zmian w npm 7 w wersji beta jest domyślne instalowanie tzw. peerDependencies. W oparciu o otrzymane opinie, twórcy chcą zminimalizować zakłócenia wywoływane przez tę instalację. Rozwiązywanie drzew pakietów zależnych rówieśniczo jest słuszne. Błąd występujący w tym miejscu może spowodować problem produkcyjny zwłaszcza jeśli pojawia się głęboko w drzewie node_modules. Niektóre pakiety mogą się nie zainstalować, jeśli posiadają nierozwiązywalne konflikty zależności.
W celu zainstalowania i odblokowania projektu, pomimo konfliktów peerDependencies skorzystaj z flagi –legacy-peer-deps. Polecenie npm ls zawsze będzie działało z –legacy-peer-deps ustawionym na false. Podczas przeglądania drzewa pakietów brakujące zależności peer podświetlą się.
Obszary robocze w npm 7 beta
Nowa wersja beta dodaje początkową obsługę obszarów roboczych (workspaces). Dzięki temu npm zmieni swoje zachowanie, jeśli plik projektu package.json zawiera pole workspaces.
Pliki na dysku
Jak już wspomnieliśmy na początku, usunięto moduł lib/fetch-package-metadata.js. Teraz do pobierania metadanych projektu służy pacote. Ponadto można korzystać z plików yarn.lock, które są źródłem metadanych pakietu. We wcześniejszych wydaniach ta opcja nie była dostępna. W tej wersji nie są już modyfikowane zainstalowane pliki package.json. Dodatkowe metadane przechowuje się w pliku blokady.
Npm audit w npm 7 beta
Npm 7 beta zmieniło dane wyjściowe oraz strukturę danych. Dzięki temu użytkownik zwraca uwagę na problemy, identyfikuje klasę poprawek niedostępnych wcześniej. Oprócz tego dane, które nie były wykorzystywane, można usunąć. W związku z tą zmianą narzędzie zużywające dane wyjściowe npm audit będą wymagały aktualizacji.
Zmiany w npx
W npm v7 beta plik binarny npx przepisano, sam pakiet npx stał się przestarzały. Teraz npx korzysta z nowego polecenia npm exec zamiast oddzielnego parsera argumentów. Przez to można podać npm dowolną wartość konfiguracyjną. Usunięto także opcje –ignore-existing, –npm, –node-arg oraz –n. Aby zapewnić zgodność z wcześniejszymi wersjami zastąpiono opcję –shell opcją –script-shell.