"npm install" instaluje wszystkie zależności w katalogu modułów węzła, zamiast je zagnieżdżać

Muszę wiedzieć, czy poniższe zachowanie jest normalne.

Kiedy ja npm install, Każda paczka z mojego pakietu.json i zależności nie są już instalowane zagnieżdżone , ale każda zależność jest instalowana w katalogu node_modules. To sprawia, że mój node_modules katalog jest rozwalony i wygląda tak:

Zrzut ekranu katalogu node_modules

Stało się to odkąd zaktualizowałem npm i node.

Teraz biegnę:

npm -v 3.3.6
node -v 4.2.1
python 2.7
windows 7
wamp

Mój plik package.json wygląda tak:

{
  "private": true,
  "devDependencies": {
    "gulp": "^3.8.8"
  },
  "dependencies": {
    "laravel-elixir": "^3.0.0",
    "bootstrap-sass": "^3.0.0"
  }
}

To standardowy plik laravel package.json.

Czy jest sposób, aby mieć zagnieżdżone katalogi ponownie, ponieważ nie podoba mi się taki wysadzony artykuł z ponad 100 podkatalogów.

Author: bcmcfc, 2015-10-15

2 answers

To Nowe zachowanie npm 3 zgodnie z ten blog npm .

 34
Author: sagie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-02 18:43:01

Aktualizacja: jak wspomniał Erik Pukinskis w komentarzach: Od npm 3.5 wsparcie dla --legacy-bundling zostało wycofane.


Tak, istnieje sposób, aby ponownie zagnieżdżać katalogi, zmieniając domyślne zachowanie npm (wersja 3 od tego zapisu):

  1. Usuń aktualnie obecny katalog node_modules.

  2. Powiedz npm, aby zainstalować z pakietem legacy dla tej jednej instalacji:

    npm install --legacy-bundling

A " stały" "alternatywa": {]}

  1. Ustaw konfigurację npm tak, aby zawsze używała pakietu starszego typu...

    npm set legacy-bundling=true

  2. .. i biegać jak zwykle:

    npm install

Uwaga: pobieranie zależności ze starszymi pakietami zajmie dużo więcej czasu, ponieważ zostanie zainstalowanych wiele różnych wersji tych samych zależności.

Disclaimer: jako użytkownik spoza Windows nie mam potrzeby płaskich zależności i chcę znaleźć samodzielne deklarowane zależności z łatwością na korzyść automatycznego dedupingu. Ponieważ instalacja zależności npm bez łączenia starszych pakietów zajmuje już niewiarygodną ilość czasu, zazwyczaj jestem gotów poświęcić te dodatkowe minuty na instalację. Wraca do 5 katalogów z poprzednich 700 + (...) w konfiguracji Laravel Elixir z bootstrap (non-sass), dodano font-awesome i jquery.

 60
Author: luchaos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-10 22:36:31