NodeJS - Czym są paczki rozpoczynające się od `@`...

0

...i dlaczego stwarzają problemy podczas odinstalowywania?

Przykład

npm --save-dev install mocha
npm uninstall mocha

wszystkie zależności znikają z wyjątkiem @ungap. Inny moduł do testów do testów Jest instaluje cała masę takich paczek i zaśmiecają potem node_modules po odinstalowaniu.

3

Niczym specjalnym, znak @ to dozwolony znak w nazwie paczki.

Konwencja jest taka, że niby paczki @abc/def to coś jak "namespace", ale to tylko konwencja.

0

Dzięki. To jeszcze pytanie, dlaczego nie są usuwane jeśli występują jako zależność innej paczki?

2

Generalnie od @ zaczynają się paczki zrobione na podstawie monorepo, czyli gdy pobieramy paczkę np @Test to nasz test jest rootem głównego projektu i po nim trzeba się odwoływać do potrzebnej nam paczki czyli np @Test/helloWorld, jest to robione gdy rozdzielamy główna paczkę na mniejsze bo np. jedna paczkę chcemy mieć dla reacta a druga dla nodejs ale jednocześnie chcemy używać jednego namespace, jak się robi własne paczki do npm w tym typie to dobrym narzędziem do tego jest np lerna

a paczki nie są usuwane ponieważ kazda paczka która deklarujesz w dependency w package.json pobiera do twojego node_modules swoje własne zależności, więc jak jakaś paczka jej potrzebuje to musi się tam znajdować i nie będzie usuwana

1
several napisał(a):

Dzięki. To jeszcze pytanie, dlaczego nie są usuwane jeśli występują jako zależność innej paczki?

A czemu miałyby być?

0

Zadałem nie precyzyjne pytanie w swoim drugim poscie. Ja wiem, że zależności isntalowanej paczki muszą zostać ściągnięte do node_modules/, moim pytaniem jest, dlaczego po odinstalowaniu wcześniej zainstalowanej paczki, wszystkie jej zależności są usuwane, z wyjątkiem tych, kóre zaczynają się na "@"? Może zrobię krótkie nagranie obrazujące sytuację.

3
several napisał(a):

Zadałem nie precyzyjne pytanie w swoim drugim poscie. Ja wiem, że zależności isntalowanej paczki muszą zostać ściągnięte do node_modules/, moim pytaniem jest, dlaczego po odinstalowaniu wcześniej zainstalowanej paczki, wszystkie jej zależności są usuwane, z wyjątkiem tych, kóre zaczynają się na @? Może zrobię krótkie nagranie obrazujące sytuację.

Jeśli chcesz wiedzieć dlaczego dana paczka abc jest nadal zainstalowana to wpisz

npm ls abc

Jeśli używasz yarna, to

yarn why abc
0

Reprodukcja w gifie niżej. Tym nie mniej sytuacja się wyjaśniła, w node_modules nie zostaje paczka tylko pusty folder jako placeholder na "namespace". Słabo trochę, jeśli w zakresie nie ma żadnego modułu to folder IMHO też powinien zostać usunięty, a tak zostajemy ze śmieciami. To na wersji 14, może zmieniło się coś w wyższych wersjach?
screenshot-20220503122859.gif

1 użytkowników online, w tym zalogowanych: 0, gości: 1