Ситуация
Я хочу использовать gulp и связанные с ним интерфейсные цепочки инструментов в средах разработки Windows. Я нажимаю на стену, пытаясь использовать gulp плагины, такие как Browser-Sync, потому что граф папок node_modules вентиляторами слишком долго заставляет пути файлов Windows копировать файлы. Мне нужен прагматичный подход для решения этой проблемы прямо сейчас в Windows, независимо от того, что сообщество Node может или не может обеспечить улучшение удобства использования npm в Windows в будущем.
2 вопроса
-
Есть ли рабочий процесс npm для Windows, который работает так, как он был предназначен? "запустить команду и установить файлы" (например, сопоставимо с npm на OSX, npm на Linux, рубиновые камни или даже на nuget). Я не хочу возиться с кучей ручных изменений файлов, символических ссылок и т.д. каждый раз, когда я использую npm в Windows.
-
Существует ли хорошо документированный стабильный рабочий процесс Cygwin для выполнения npm и Node для обхода ограничений на пути к файлу Windows API?
Сведения о Gory, перечисленные ниже...
Общая проблема
- Запуск npm-установки из стандартной командной строки Windows завершится неудачей на глубоко вложенных иерархиях node_modules.
- В потоке jithent github repo, это признанная проблема без каких-либо приемлемых обходных решений для разработчиков в средах с ОС Windows. (Действительно?)
- NT Kernel поддерживает длину пути до 32 767 символов.
- API Windows MAXPATH ограничен 260 символами.
- Windows API обрабатывает операции с файлами для всех основных оболочек Windows, а также в том числе: Explorer, CMD, Powershell, MYSgit bash и т.д. (MS действительно? Сколько времени существует NTFS?)
- Cygwin поддерживает длинные пути к файлам, но npm.cmd не работает из-за коробки из-за форматирования crlf. Я попробовал преобразование DOS2Unix на npm, чтобы заставить его работать с Cygwin, но, похоже, с этим возникают другие проблемы.
My Current Hack
- Создайте папку "n" в качестве промежуточной области в корне C: \, потому что это сокращает мой путь к папке.
- Запустите npm в папке "n", чтобы установить модули для всех, что мне нужно.
- Запустите Cygwin и используйте cp для копирования папки node_modules в целевой проект.
- Промывка и повторение при изменении зависимостей или когда мне нужно развернуть новый проект.
Другие неприступные временные решения
Символические ссылки могут использоваться для сокращения путей к файлам, но это kludgy hacks. По мере роста экосистемы npm вложенные сети зависимостей становятся слишком длинными, и это обходное решение становится непригодным.
Добавление всех зависимостей в файл корневой папки package.json было упомянуто в одном потоке, с которым я столкнулся. Хотя этот подход сгладит структуру папок и предотвратит загрузку дублирующих модулей, это обходное решение кажется неестественным. Он также убивает удобство использования, долговечность и производительность npm, потому что вам приходится возиться с файлами и папками после установки вручную или с помощью некоторых хакерских скриптов. Этот подход также уязвим к той же судьбе, что и подход Symbolic Links может в конечном итоге пострадать.