Ситуація
Я хочу використовувати gulp та пов'язані з ними інтерфейсні ланцюжки інструментів у середовищах розробки, розміщених у Windows. Я б’юся об стіну, намагаючись скористатися додатковими модулями, такими як Browser-Sync, оскільки графік папок node_modules роздуває, роблячи шляхи файлів Windows занадто довгими для копіювання файлів. Я хотів би прагматичного підходу до вирішення цієї проблеми прямо зараз у Windows, незалежно від того, що може надавати спільнота Node, а що не надавати для поліпшення зручності використання npm у Windows у майбутньому.
2 запитання
Чи існує робочий процес npm для Windows, який працює просто так, як було задумано? "запустити команду та встановити файли" (наприклад, порівняно з npm на OSX, npm на Linux, ruby gems або навіть nuget). npm у Windows.
Чи існує добре задокументований, стабільний робочий процес Cygwin для виконання npm і вузлів, щоб обійти обмеження шляху до файлу Windows API?
Деталі Горі, перелічені нижче ...
Загальна проблема
- Запуск інсталяції npm із стандартного командного рядка Windows не вдається виконати глибоко вкладені ієрархії node_modules.
- Відповідно до потоку репозиторію github Joyent, це визнана проблема, яка не має приємних обхідних шляхів для розробників у середовищах, орієнтованих на Windows. ( Справді? )
- Ядро NT підтримує шлях до файлу довжиною до 32 767 символів.
- MAXPATH Windows API обмежується 260 символами.
- Windows API обробляє файлові операції для всіх основних оболонок Windows і не тільки, включаючи: Explorer, CMD, Powershell, MYSgit bash тощо ( MS насправді? Як давно існує NTFS? )
- Cygwin підтримує довгі шляхи до файлів, але npm.cmd не працює нестандартно через форматування crlf. Я спробував перетворення DOS2Unix на npm, щоб він працював із Cygwin, але, схоже, з цим виникають інші проблеми.
Мій поточний хак
- Створіть папку "n" як проміжну область у кореневій папці C: \, оскільки це скорочує шлях до моєї папки.
- Запустіть npm всередині папки "n", щоб встановити модулі для того, що мені потрібно.
- Запустіть Cygwin і використовуйте cp для копіювання папки node_modules у цільовий проект.
- Полоскати і повторювати, коли залежності змінюються або коли мені потрібно закрутити новий проект.
Інші неприємні обхідні шляхи
Символічні посилання можна використовувати для скорочення шляху до файлів, але це важкі хакі. У міру зростання екосистеми npm вкладені ланцюжки залежностей стануть занадто довгими, і це обхідне рішення стане непридатним.
Додавання ВСІХ залежностей до файлу package.json кореневої папки було згадано в одному потоці, з яким я зіткнувся. Хоча такий підхід згладить структуру папок і запобіжить завантаженню повторюваних модулів, цей обхідний шлях здається неприродним. Це також вбиває зручність використання, довговічність та продуктивність npm, оскільки вам доведеться возитися з файлами та папками після встановлення вручну або за допомогою деяких хакі-скриптів. Цей підхід також вразливий до тієї самої долі, яку з часом може зазнати підхід до символічних посилань.