Мне нужно знать, нормально ли следующее поведение.
Когда я npm install
, каждый пакет из моего package.json и зависимостей больше не устанавливается вложенным, но каждая зависимость устанавливается в node_modules
. Это приводит к тому, что моя директория node_modules
взорвана и выглядит следующим образом:
Это произошло после обновления npm и node.
Теперь я запускаю:
npm -v 3.3.6
node -v 4.2.1
python 2.7
windows 7
wamp
Мой файл package.json
выглядит следующим образом:
{
"private": true,
"devDependencies": {
"gulp": "^3.8.8"
},
"dependencies": {
"laravel-elixir": "^3.0.0",
"bootstrap-sass": "^3.0.0"
}
}
Это стандартный файл laravel package.json
.
Есть ли способ снова вставить вложенные каталоги, потому что мне не нравится такая взорванная статья с более чем 100 подкаталогами.
Что такое новое поведение npm 3
в соответствии с этот блог npm.
Да, есть способ снова вставить вложенные каталоги, изменив поведение по умолчанию npm (версия 3 на момент написания):
Удалить текущую папку node_modules
.
Сообщите npm для установки с устаревшим пакетом для этой установки:
npm install --legacy-bundling
"Постоянная" альтернатива:
Задайте конфигурацию npm, чтобы всегда использовать устаревшее связывание...
npm set legacy-bundling=true
.. и выполняйте как обычно:
npm install
Примечание. выборки зависимостей с устаревшим пакетом потребует гораздо больше времени, потому что будет установлено много разных версий одинаковых зависимостей.
Отказ от ответственности:. Как пользователь, не являющийся пользователем Windows, мне не нужны плоские зависимости и вы хотите легко найти самозапрошенные зависимости в пользу автоматической дедупликации. Поскольку установка зависимостей npm без устаревшего пакета уже занимает невероятное количество времени, я обычно готов потратить эти дополнительные минуты на установку. Он возвращается к 5 каталогам из более 700 + (...) в настройке El Larvel Elixir с бутстрапом (не-sass), шрифтом-awesome и jquery.
npm install <list of packages I require> --legacy-bundling --save
записывает только прямые зависимости в package.json. Затем я выполнил rm -rf node_modules && npm install
, чтобы получить новый каталог flat node_modules. Это лучшее из обоих миров для меня.