Как начать разрабатывать в Windows
В руководстве приводится пример базовой настройки Windows, приближающей её по возможностям к другим операционным системам.
Среда Windows не очень хорошо подходит для разработки, если вы не пишете под .net. Выражается это во многих аспектах: система не POSIX-совместимая (а большинство библиотек пишется именно для таких систем, например linux или mac), в Windows нет примитивных средств, которые необходимы любому разработчику для комфортной работы.
Несмотря на все написанное ниже, наша основная рекомендация — ставить Linux-дистрибутив, например, Ubuntu и полностью погружаться в него. Подавляющее большинство веб-проектов работает под управлением Linux-систем. А постоянное использование такой системы на домашнем и рабочем компьютере равносильно погружению в языковую среду при изучении иностранных языков.
Командная строка
Первое, к чему сразу нужно привыкать — командная строка. Работа на удаленных серверах, git, пакетные менеджеры и многое другое, всё это делается, в первую очередь, в командной строке. Хотя такой способ и непривычен для обычного пользователя, он имеет множество преимуществ перед использованием мыши. К ним относятся:
- Скорость работы значительно возрастает и намного опережает оконные интерфейсы
- Легкая возможность автоматизации действий за счет скриптования. Другими словами, любые команды можно записать в файл и использовать его. Никаких специальных средств не требуется
- Гораздо более хорошее понимание происходящих процессов
- На серверах оконного интерфейса не бывает в принципе, так что тут без вариантов
Если вы пользуетесь IDE, то, скорее всего, знаете, что они интегрируют внутри себя множество инструментов. И хотя местами такая интеграция удобна (не для всех), не стоит ей злоупотреблять в самом начале пути. Гораздо лучше научиться пользоваться чистыми инструментами для лучшего понимания происходящего. К тому же, вы не будете зависеть от среды и всегда будете ориентироваться на местности.
Под термином "командная строка" скрывается сразу несколько тесно связанных, но все же независимых инструментов: терминал и командная оболочка.
Командная оболочка (shell, командный интерпретатор) — программа, позволяющая с помощью текстовых команд выполнять функции операционной системы и управлять другими программами. Например с помощью shell можно перемещаться по файловой системе и выполнять операции по созданию и удалению файлов. Сам по себе shell представляет из себя REPL (Read Eval Print Loop). Другими словами после запуска оболочки, появляется строка ввода в которую вводятся команды. После того как команда отработает, shell снова входит в режим ожидания ввода команд. Кстати у многих языков программирования есть свой собственный REPL, позволяющий в таком же стиле запускать код.
В Windows по умолчанию используется command.com
, а в Linux — Bash. Кроме них существует множество других оболочек, но Bash — стандарт де-факто, и его нужно знать.
Чтобы запустить shell нужна еще одна программа — терминал (term, Terminal Emulator). Терминал — это и есть то самое окно, внутри которого запускается оболочка. Этот термин изначально использовался для отдельно стоящих монитора и клавиатуры, посредством которых можно было подключиться к мейнфрейму (большим многопользовательским компьютерам древности). Терминалы популярны и сейчас: те же банкоматы и устройства для пополнения денег на счетах всевозможных сервисов. Поэтому тот терминал, который представлен программой на наших компьютерах, называют эмулятором, ведь у него нет железной части.
Терминалов, как и оболочек существует множество. Разница заключается в том, какие возможности для удобной работы они предоставляют. Например, очень важно чтобы терминал поддерживал вкладки. Тогда очень сильно упрощается работа с большим количеством терминалов. Стандартный эмулятор в Windows не умеет работать ни с вкладками, ни с чем либо ещё. По сути, все что он делает — запускает cmd.exe
и больше никак не участвует в процессе.
А вот что могут хорошие терминалы:
- Вкладки
- Split Panes — разделение рабочей области на части
- Поиск
- Профили
и многое другое.
В Windows часто бывает так, что терминал одновременно поставляется с командной оболочкой.
Основная (общая) конфигурация
Chocolatey
Пакетные менеджеры в средах, отличных от Windows — это основной способ установки программ и библиотек на компьютер. Если вам понадобится поставить Node.js, то достаточно сделать следующее:
// mac
$ brew install node
// ubuntu
$ apt install node
Удобств в таком способе довольно много. Во-первых, не нужно бродить в поисках необходимого софта по всему интернету и тратить уйму времени. Во-вторых, всё, что можно набрать в командной строке автоматизируется. Другими словами, можно написать скрипт, который сам будет ставить всё, что нужно (подробнее смотрите Ansible).
Для Windows существует несколько пакетных менеджеров, но именно Chocolatey стал стандартом де-факто. Установка choco стоит из нескольких простых шагов, которые хорошо описаны в соответствующем разделе.
В чем-то Chocolaty справляется даже лучше, чем brew или apt. С его помощью можно ставить не только специализированный софт (например, для программистов), но и любые программы вообще.
$ choco install GoogleChrome
или, что тоже самое
$ cinst GoogleChrome
Список того, что можно поставить находится здесь.
В тексте ниже подразумевается, что вы установили Chocolatey и знаете как им пользоваться.
Терминалы
Cmder (базируется на ConEmu)
Эмулятор, поставляющийся вместе с командной оболочкой Git Bash. Его установка решает сразу две задачи. С одной стороны вы получаете продвинутый терминал, с другой, из коробки, эмулятор Bash (настоящий bash получить нельзя, он работает только в *NIX системах).
Запустите программу cmd.exe
и выполните там следующую команду:
$ choco install cmder
После установки Cmder всё остальное следует делать только из под него.
MobaXterm
Альтернативный эмулятор, доступный по ссылке: MobaXterm. Также как и Cmder, из коробки поставляется с командной оболочкой. Бесплатен для домашнего использования.
$ choco install mobaxterm
Hyper.js
Рассмотрен здесь для полноты картины. В отличие от предыдущих предоставляет только терминал. По умолчанию запускает внутри себя cmd.exe
, но можно настроить на любую оболочку.
$ choco install hyper
Ubuntu for Windows
Ремарка для владельцев последних версий Windows. Microsoft интегрировала Ubuntu внутрь Windows. Особенности установки и включения этой интеграции зависят от конкретной версии Windows, но в целом это сводится к нажатию нескольких кнопок. Подробности можно найти в нашей инструкции по установке Ubuntu Linux внутри Windows.
Vagrant
Vagrant — программа, созданная для разворачивания окружения разработчика, работающая во всех основных операционных системах. Она работает совместно с одной из систем виртуализации (например VirtualBox). Главное преимущество перед другими способами работы в Windows в том, что это не эмуляция, а полноценная виртуальная машина с Linux на борту.
Вагрант, в отличие от прямого использования виртуальной машины, дает множество полезностей для разработчика. Подробнее про преимущества и процесс установки читайте в отдельном руководстве.
choco install virtualBox
choco install vagrant
Babun (Cygwin)
Cygwin — программное обеспечение, эмулирующее среду Linux на Windows. С его помощью можно запускать программы, написанные под Linux. Конечно, у этого способа множество ограничений, но все же он лучше, чем ничего.
С Cygwin работать напрямую не очень удобно, поэтому был создан Babun. Это командная оболочка, построенная на Cygwin. В отличие от других вариантов, Babun поставляется с собственной экосистемой. Например, он включает в себя пакетный менеджер pact, что приводит к конфликту с Chocolatey.
$ choco install babun
Кирилл Мокевнин