Пакеты 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"
Вот итоговый список пакетов:
Я думаю, вы можете сразу увидеть, как это довольно неработоспособно.
Во-вторых, становится невозможным удалить пакет.
В-третьих, есть некоторая вложенность, но почему и почему это немного загадка.
Следствием будет перечисление каждого пакета ASP.Net, который установлен под DNX - их будет буквально сотни, и он будет также неработоспособен.
Я не до конца понимаю проблему ограничения количества символов, но мне кажется, что это скорее проблема с графическим интерфейсом. Еще раз спасибо.
Это сделано специально, так как новая версия узла больше не вкладывает пакеты NPM по умолчанию. Причина, по которой это было изменено, заключается в том, что старый дизайн часто вызывал проблемы MAX_PATH, когда вложенные проекты создавали длины пути, которые легко превышали ограничение в 256 символов в Windows.
Я понимаю, что вам нравится вложение с точки зрения представления, но с точки зрения надежности это огромное улучшение. Пользователи NPM в Windows постоянно сталкиваются с этой проблемой.