В течение последнего года я писал книгу для Manning Publications о создании кроссплатформенных настольных приложений с Node.js, Electron и NW.js. Чтобы протестировать примеры приложений из книги на Windows, я купил ASUS ZenBook. Проведя последние 8 лет, работая в основном над Mac OS X и немного над Linux, опыт работы с Windows был совершенно другим, и со временем я обнаружил, что накапливаю список пунктов если бы только это было. Этот пост в блоге и есть этот список пожеланий.

Дополнительные возможности командной строки

В Windows есть 2 приложения командной строки: Command Prompt и PowerShell. Тем не менее, PowerShell на самом деле представляет собой оболочку командной строки со своим собственным языком сценариев, который системные администраторы могут использовать для выполнения различных задач.

PowerShell чувствует, что у него есть много функций, которые должна иметь командная строка; выбор текста, возможность запускать «ls», «clear» и более простое копирование и вставка. Попробуйте использовать терминал в Mac OS X, а затем переключитесь на использование командной строки в Windows — опыт будет совершенно другим. Такое ощущение, что командная строка нуждается в гораздо большей любви в Windows. Здорово, что Microsoft привносит bash в Windows (бета-версия доступна для инсайдеров Windows уже сегодня), но это не может произойти достаточно скоро.

Поддержка SSH

Мне не хватало возможности войти в ящики и загрузить код в репозитории GitHub из командной строки. Я прибегал к использованию официального настольного приложения GitHub для обработки обновлений кода из моих репозиториев, но когда дело доходит до доступа к VPS и возиться с ним, мне приходится использовать сторонние инструменты, такие как Cwgwin или SSHPutty. Опять же, это возвращается к необходимости использовать сторонний инструмент, а не к возможности работать с инструментами операционной системы по умолчанию из коробки.

Тем не менее, есть одно средство, которое спасло жизнь — Совок. Часто сравниваемый с Homebrew для Windows, Scoop позволяет устанавливать программное обеспечение из командной строки. Мало того, вы можете установить такие библиотеки, как grep, которые, как вы уже догадались, OpenSSH.

Для меня открытие Scoop было большой радостью, но было бы неплохо, если бы некоторые из этих инструментов были доступны в Windows по умолчанию, чтобы новые разработчики Windows могли сразу приступить к работе. Это также добавит некоторые преимущества разработчикам, которые привыкли к простоте установки программного обеспечения из командной строки, во многом так же, как пользователи Ubuntu Linux могут устанавливать пакеты с помощью apt-get.

Ограничение в 256 символов на пути к файлам

Microsoft Windows имеет ограничение в 256 символов на количество символов, которое может иметь путь к файлу. Я не знал об этом ограничении, пока не попытался отладить проблему с загрузкой библиотеки Javascript, установленной Bower, в настольном приложении.

Проблема, с которой я столкнулся, заключалась в том, что настольное приложение, которое я создал, работало в Mac OS X и Linux, но не в Windows. Это была озадачивающая проблема, поскольку сразу ничего не выскочило — не было явной ошибки, объясняющей, что приложение пыталось загрузить файл, путь к файлу которого был слишком длинным для Windows. Он молча терпел неудачу. Мне пришлось использовать инструменты разработчика для среды настольных приложений, чтобы попытаться выяснить, что происходит, только чтобы увидеть, что некоторые библиотеки не загружаются приложением.

Немного погуглив, я смог установить, что столкнулся с проблемой ограничения в 256 символов — внешние библиотеки, установленные с помощью Bower, будут иметь свои зависимости, установленные внутри вложенной папки, и так далее. Пользователи NPM столкнулись с той же проблемой, что привело к использованию установки зависимостей NPM в плоской структуре папок в версии 3 NPM.

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

Резюме

Microsoft под руководством Сатьи Наделлы — это глоток свежего воздуха; они сделали ряд крупных шагов, таких как открытие исходного кода .Net framework, приобретение Xamarin, поддержка SQL Server в Linux и внедрение Bash в Windows. Сейчас есть ощущение, что Microsoft действительно пытается охватить сообщество разработчиков, которое развивалось за пределами экосистемы Microsoft за последнее десятилетие с небольшим.

Я надеюсь, что они продолжат двигаться дальше и сделают Windows лучшей платформой для разработчиков Node.js. Любой, кто помнит презентацию Райана Даля о плачевном состоянии поддержки Windows для Node.js в 2011 году, будет рад узнать, как далеко продвинулись дела, но я чувствую, что есть несколько шероховатостей, которые в какой-то мере помогут сделать Windows идеальная платформа для разработчиков Node.js, особенно для тех, кто разрабатывает настольные приложения с помощью Node.js, учитывая огромную популярность Electron.