Пакеты NPM, не вложенные в Visual Studio с последним Node

После запуска стандартного веб-приложения ASP.Net 5 и добавления пакетов npm VS2015 прекратил их вложение. Даже с одним простым пакетом, таким как 'del', я вижу -

Я уверен, что он должен показывать только основной пакет, с его зависимостями, вложенными в него. В настоящее время VS делает это во всех проектах, тогда как раньше они были аккуратно вложены. Добавление двух или трех пакетов приводит к огромному и неуправляемому списку посторонних пакетов.

Если я бегу npm list из командной строки выходные данные указывают на все пакеты, вложенные аккуратно ниже del. я пробовал npm prune а также npm cache clean но без успеха. NPM сообщает версию 5.4.0 узла и 3.5.4 самого себя, если это актуально.

Я бы хотел, чтобы он вел себя так, как должен!

РЕДАКТИРОВАТЬ - По-видимому, это происходит, только если вы измените Node.js по умолчанию на более новую версию. По умолчанию в обновлении 1 VS2015 отображаются NPM 1.4.9, узел 0.10.31. Тем не менее, не помогает, хотя. Я подозреваю, что это не может быть решено без обновления до Visual Studio, но может быть разумный способ обойти это.

2 ответа

Решение

РЕДАКТИРОВАТЬ - вот ответ.

Суть этой проблемы заключается в том, что npm3 решил сгладить каталог модулей, в основном из-за проблем с приложениями Windows, использующими старые API, которые не поддерживают длинные пути к файлам.

Длинные пути к файлам, похоже, не проблема с VS. Поскольку npm2 по-прежнему активно поддерживается, вы должны использовать ветку npm2, если хотите избежать кошмарных вложений.

Однако, обновление node.js устанавливает последнюю ветку npm3. Чтобы вернуть npm обратно в ветку 2, вы должны запустить Powershell от имени администратора и запустить

npm install -g npm@2.14.14

Перезагрузите VS. Если у вас уже есть плоский каталог, откройте node_modules папку и удалите все, затем восстановить пакеты из VS GUI. Затем вы должны вернуться к работоспособной структуре.


(Это действительно ответ Майклу, но мне нужно опубликовать изображение, которое я не могу сделать в комментариях.)

Спасибо за разъяснение позиции. Надеюсь, вы не будете возражать, если я укажу, почему я считаю, что это очень проблемная позиция.

Во-первых, стандартный набор пакетов npm вполне приемлем "gulp": "3.8.11", "gulp-concat": "2.5.2", "gulp-cssmin": "0.1.7", "gulp-uglify": "1.2.0", "rimraf": "2.2.8"

Вот итоговый список пакетов:

Список сплющенных пакетов npm

Я думаю, вы можете сразу увидеть, как это довольно неработоспособно.

Во-вторых, становится невозможным удалить пакет.

В-третьих, есть некоторая вложенность, но почему и почему это немного загадка.

Следствием будет перечисление каждого пакета ASP.Net, который установлен под DNX - их будет буквально сотни, и он будет также неработоспособен.

Я не до конца понимаю проблему ограничения количества символов, но мне кажется, что это скорее проблема с графическим интерфейсом. Еще раз спасибо.

Это сделано специально, так как новая версия узла больше не вкладывает пакеты NPM по умолчанию. Причина, по которой это было изменено, заключается в том, что старый дизайн часто вызывал проблемы MAX_PATH, когда вложенные проекты создавали длины пути, которые легко превышали ограничение в 256 символов в Windows.

Я понимаю, что вам нравится вложение с точки зрения представления, но с точки зрения надежности это огромное улучшение. Пользователи NPM в Windows постоянно сталкиваются с этой проблемой.

Другие вопросы по тегам