Давным-давно в далёкой, далёкой галактике…

Если вы помните, то в небольшом цикле статей по построению NW.js (тогда ещё node-webkit) приложения (1, 2, 3), я предложил два варианта для сборки. Рассмотрим принципиальные недостатки этих способов:

Если вы выбрали для себя ручную сборку приложения, то вы явно любите пожёстче. Такой вариант довольно ресурсоёмкий в плане времени, так как на выполнение всех пунктов инструкции по сборке может уйти довольно много этого ресурса.

Вторым вариантом будет более-менее автоматическая сборка при помощи Grunt. Основным минусом для большинства разработчиков можно выделить необходимость иметь дело с Grunt и его задачами. Не всем нравится работать с системами сборок, но работать с ними нужно, да и в 2015 году это бонтон.

Хотелось бы иметь такой инструмент, который максимально автоматизировал и упрощал сборку приложения для большинства людей и предоставлял настройки для её управления в удобном виде. И да, кстати, такой инструмент существует, встречайте — Web2Executable.

Web2Executable

Итак, Web2Executable — это кроссплатформенная (Mac, Windows, Linux) утилита, написанная на Python, которая позволяет собирать NW.js приложения по средствам графического интерфейса. Проще говоря, Web2Executable упрощает сборку приложения до тривиального кликанья мышью по необходимым чекбоксам.

Картинки в статье кликабельны!

Утилита Web2Executable поддерживает:

  • Windows 7+
  • Mac OS 10.7+
  • Ubuntu 14.04

Собранное приложение будет поддерживать только те ОС, что поддерживает NW.js. Тут уже вся инициатива поддержки лежит на авторе NW.js. Напомню, что сейчас Web2Executable поддерживает только node-webkit, который построен на базе Node.js, а вот NW.js на io.js.

В версии v0.1.16b сейчас доступны следующие возможности:

  • Кроссплатформенное решение (Mac, Windows, Linux)
  • Автоматическое распознание значащих файлов (package.json)
  • Работа с видео и аудио из коробки
  • Прост в использовании
  • Прозрачная сборка приложения (не требуется ручных действий)
  • Возможность добавлять иконки к приложению для всех платформ
  • Возможность выбора версии node-webkit (NW.js пока что не поддерживается)
  • Консольная утилита для автоматических систем (например, для ночных сборок)
  • Поддержка игровых HTML5-движков (Phaser и других)

Ближайшие планы:

  • Поддержка UPX для уменьшения размера .exe файла
  • Возможность минификации ресурсов приложения (js, html, css)

Функционал вполне приличный для такого рода утилиты. На одном окне расположены все необходимые настройки для сборки приложения. Далее разберёмся с тем, как работать с Web2Executable.

Как пользоваться?

Не люблю разбирать очевидные вещи, но всё же стоит кратко пройтись по тому функционалу, что представлен в Web2Executable.

Настройки путей

Начнём с самого очевидного для всех.

Доступные поля:

  • Project Directory — Директория проекта NW.js приложения.
  • Output Directory — Директория, в которую будет сохраняться собранное приложение.

Настройки приложения

Как я и говорил выше, Web2Executable поддерживает автоматическую выгрузку данных из package.json, поэтому, если не лень, то стоит заранее заполнить все поля.

Доступные поля:

  • Main html file — Основной HTML-файл приложения.
  • App Name — Названия приложения.
  • Node Main — Путь к Node.js скрипту, который будет выполняться при запуске приложения.
  • Description — Описание приложения.
  • Version — Версия приложения.
  • Keywords — Ключевые слова.
  • User Agent — Заголовок для HTTP запросов из приложения.
  • Chromium Args — Аргументы для Chromium. Например, --disable-accelerated-video --force-cpu-draw.
  • Node Remote — Включение вызывающего узла в удалённую страницу. Подробнее в вики NW.js.
  • JS Flags — Флаги, передаваемые JS-движку. Например, --harmony_proxies --harmony_collections.
  • Inject JS Start — Путь к JS-файлу, который будет выполняться перед запуском любого другого скрипта.
  • Inject JS End — Путь к JS-файлу, который будет выполнен после того, как загрузится DOM.
  • Trust Anchors — Список PEM самозаверенных сертификатов, которые используются для разрешения подключения к службам.
  • Snapshot — Путь к снимку файла, который будет загружен с приложением. Snapshot-файл содержит скомпилированный код приложения.
  • Include Nodejs — Включить Node.js в WebKit.
  • Single Instance — Ограничить количество запущенных копий приложения до одного экземпляра.
  • Load Plugins — Следует ли загружать внешние плагины для WebKit. Например, Flash.
  • Load Java — Загружать ли Java-апплеты.
  • Page Cache — Следует ли включить кэширование страниц.

Настройки окна

Те самые настройки, что обычно указываются в файле package.json в секции "window", которая описывает поведение окна приложения в ОС.

Доступные поля:

  • Title — Заголовок окна приложения.
  • Window Icon — Иконка для окна приложения.
  • Mac icon — Иконка приложения для Mac.
  • Exe icon — Иконка для .exe файла приложения в Windows.
  • Position by — Позиция окна при запуске приложения: null или center или mouse.
  • Width — Ширина окна приложения.
  • Height — Высота окна приложения.
  • Min width — Минимальная ширина окна приложения.
  • Min height — Минимальная высота окна приложения.
  • Max width — Максимальная ширина окна приложения.
  • Max height — Максимальная высота окна приложения.
  • Show Toolbar — Отображение панели навигации.
  • Keep on Top — Отображать окно поверх остальных окон.
  • Window Frame — Убрать рамку у окна.
  • Taskbar — Отображение на панели задач или в доке.
  • Visible — Отображение окна при запуске приложения.
  • Resizable — Поддержка изменения размеров окна.
  • Fullscreen — Разрешение полноэкранного режима.
  • As desktop — Вывести приложение на фон рабочего стола.
  • Transparent — Следует ли включить прозрачный режим окна. (node-webkit >= v0.11.2)

Обратите внимание, что для добавления иконки в .exe файл, требуется установленный Python 2.x и библиотеки: Pillow, PIL и pyside.

Настройки сборки (экспорта)

Пожалуй, самые очевидные настройки в этой утилите. Просто выберите поддерживаемые вашим приложением платформы.

Доступные поля:

  • Windows-x32
  • Windows-x64
  • Mac-x32
  • Mac-x64
  • Linux-x32
  • Linux-x64

Думаю, что здесь всё и так понятно.

Настройки NW.js

В этой секции настроек вы можете выбрать версию node-webkit. Напомню, что NW.js ещё не поддерживается, так как он находится в стадии альфа-тестирования. Ждём.

Доступные поля:

  • Node-webkit version — Версия node-webkit, которая будет загружена для объединения с приложением.
  • Download location — Директория, в которую будут загружены пакеты node-webkit для выбранных платформ.
  • Force download — Принудительная загрузка (загрузка файлов node-webkit, даже при их наличии).

Выводы

Итак, теперь мы имеем отличный инструмент, который упрощает то, что и так не было сложным, но занимало некоторое дополнительное время.

Советую подкинуть автору монеток на кофе, чтобы он поддерживал свой проект в должном и актуальном для современности виде. Если же вы планируете зарабатывать на своём приложении, то вы просто обязаны подкинуть автору монеток, хотя бы сумму равную стоимости вашего приложения. Сделать это можно, используя сервис Pledgie (ссылка указана в репозитории).

Если у вас есть предложения по добавлению функционала в Web2Executable, то обязательно поделитесь ими с автором в репозитории на GitHub.