Hotel – приют для localhost.


Запуск и управление всех ваших веб-проектов с одного адреса.


Больше, разных портов костылей.


Можно держать зоопарк портов для каждого проекта: 9000, 8000, 8080, 3000, 3001…
Или настраивать веб-сервер, править /etc/hosts файл или DNS для каждого проекта.
А еще помнить, как запускать девелоперский веб-сервер для каждого проекта:


  • gulp
  • gulp serve
  • gulp watch
  • ionic serve
  • browser-sync start --server --no-open --directory --files
  • http-server -p 9000
  • python -m http.server 8000
  • php -S localhost:8000
  • и так далее...

Сделать жизнь проще поможет hotel.



1. Поставьте и запустите отель:


npm install -g hotel && hotel start

2. Заселите проекты в отель:


# foo project
cd ~/foo
hotel add 'gulp' -n foo -o foo-hotel.log

# bar project
cd ~/bar
hotel add 'gulp serve' -n bar -o bar-hotel.log

# baz project
cd ~/baz
hotel add 'gulp watch' -n baz -o baz-hotel.log

# etc...
hotel add 'ionic serve'
hotel add 'browser-sync start --server --no-open --directory --files'
hotel add 'http-server -p $PORT'
hotel add 'python -m http.server $PORT'
hotel add 'php -S localhost:$PORT'

3. Теперь они живут в отеле http://localhost:2000/


Как открыть проект?



Как работает hotel.dev?


Hotel позовляет открывать %любой%.dev адрес в браузере, заботливо поднимая ваш веб сервер и проксируя в него.


Достаточно указать прокси в браузере


Используя небольшой сценарий proxy auto-config для браузера http://localhost:2000/proxy.pac


function FindProxyForURL (url, host) {
  if (dnsDomainIs(host, '.dev')) {
    return 'PROXY 127.0.0.1:2000';
  }

  return 'DIRECT';
}

Если скормить этот сценарий бразуеру, то все, что кончается на .dev будет ходить через 127.0.0.1:2000 на ваш веб.


Теперь отель будет доступен по адресу hotel.dev.
А ваши проекты по адресам foo.dev, bar.dev, baz.dev.


GitHub проекта: https://github.com/typicode/hotel


Прошу про очепятки чепятать в личку.

Комментарии (11)


  1. uSide
    26.04.2016 17:10

    Действительно, хотел :D
    Отличная работа, спасибо!


  1. gena_glot
    26.04.2016 20:04

    Хорошая девелоперская утилита, не уверен насчет Node.js может что-то по структурнее и попровереннее взять? Так в целом незакрытая ниша — сейчас каждый разработчик поднимает какой-нибудь зоопарк (HTTP Server, Database, NoSQL DB, Hadoop, etc).


    1. rhamdeew
      26.04.2016 23:21
      +1

      Тогда строчку запуска веб-сервера надо поменять на строчку запуска docker-контейнера с зоопарком)


  1. osmirnov
    26.04.2016 20:10
    +1

    Hotel – приют для localhost

    Со словом приют больше Hostel ассоциируется :)


  1. fr_ant
    26.04.2016 21:39
    +5

    Дополнительный чаще всего не нужный слой о котором зачем-то нужно думать.


  1. Radiocity
    26.04.2016 21:40
    +11

    Зачем?


    1. JTG
      27.04.2016 15:54
      +1

      Потому что в мире современного JavaScript так принято. Через неделю появится микромодуль динамической конфигурации серверов, через 2 недели ещё один для деплоя менеждера локалхостов на удалённые хосты с возможностью скриптования на ES6, прогоняемого через babel дополнительным gulp-таском и модуль hotel-quickstart, создающий необходимую структуру папок/файлов.
      Установка очень простая:
      apt-get install ruby ruby-gem python nodejs build-essentials && npm install -g hotel-quickstart && hotel-quickstart hotel && configure && make && npm install && bower update && gulp build && grunt serve && gulp watch hotel-manager && hotel-remote start --host localhost && hotel serve


  1. maxceem
    26.04.2016 21:40

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


    1. fr_ant
      26.04.2016 21:52

      Сервер browsersync это позволяет, мало того он синхронизирует состояние если открыть с нескольких устройств.


  1. foxmuldercp
    26.04.2016 23:09
    +1

    Имею пачку контейнеров на lxc, openvz под задачи. То, что уже готово к продакшену — деплоится в докер сервер образами


  1. auine
    27.04.2016 11:06

    gulp
    gulp serve
    gulp watch
    ionic serve
    browser-sync start --server --no-open --directory --files
    http-server -p 9000
    python -m http.server 8000
    php -S localhost:8000
    и так далее...


    Окей, но точно так же я просто могу в npm кофиг записать эти команды. Единственное, что браузерный интерфейс. Эт прикольно да, но не знаю. Подобного рода доки я могу прочитать и в ридми проекта. Какой опыт использования? в чем профит, удобство, косяки, мега новый воркфлоу?