Примечание. Пряжа была переименована в Reptar

Всем привет! Хочу познакомить вас с моим новейшим творением Пряжа!

Yarn - это генератор статических сайтов, который я написал. Он был создан из-за моего разочарования по поводу доступных генераторов статических сайтов. Я подумал: «Эй, нет ничего сложного в написании собственного генератора статических сайтов!» Итак, я начал работать над Yarn. Семь месяцев спустя я с радостью представляю первую стабильную версию Yarn 1.0.0.

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

Почему я вообще захотел использовать генератор статических сайтов? Чтобы ответить на этот вопрос, я должен вернуться в 2010 год.

А если вам просто интересно услышать о Yarn, прокрутите вниз до раздела Yarn.

Начало

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

В 2010 году де-факто блог был основан на WordPress. Вот с чего я начал. Я установил свою собственную установку WordPress и продолжил свой веселый путь.

Три года я прекрасно вел блог на WordPress. Им было легко пользоваться, легко было обслуживать. У меня не было настоящих жалоб.

За исключением того, что в какой-то момент в 2014 году мне начал надоедать WordPress. Не только скучно, но и немного раздражает медлительность администратора WordPress. Также мне не нравилось углубляться в PHP, чтобы внести какие-либо существенные изменения в работу моего блога. Создание новой темы потребовало изучения языка шаблонов WordPress, и я не хотел об этом беспокоиться.

Итак, я решил, что мне нужны изменения.

Мерзкое развлечение

Как назло, Призрак только что вышел на сцену. Он позиционировал себя как усовершенствованный WordPress, ориентированный только на ведение блогов. И что самое лучшее? Он был написан на Node.js. Аллилуйя!

Так что я перенес свой блог на Ghost. И в течение года я использовал Ghost для ведения своего блога.

Я также начал участвовать в проекте Ghost. Я был основным участником проекта около шести месяцев, помогая улучшить Ghost любым возможным способом.

Ghost было сложнее развернуть, чем WordPress, поскольку это приложение Node.js. У меня не было большого опыта развертывания приложений Node.js, поэтому мне пришлось учиться. Это не было ужасно, но я определенно не ожидал такой стоимости усыновления.

Все шло хорошо. До одного дня, когда этого не произошло.

Обновление Призрака было легкой задачей. Я не использовал Ghost как #blessed, и поэтому каждый раз, когда мне приходилось обновлять, мне приходилось платить дополнительную плату. Иногда в моем процессе Ghost происходила утечка памяти, из-за которой мой хостинг-провайдер убивал процесс, чтобы он не повлиял на общий хост, на котором он находился.

Также в какой-то момент я перестал участвовать в проекте Ghost.

Все это в совокупности подтолкнуло меня к тому, чтобы уйти от Ghost.

Статичное электричество

После Ghost я наконец сказал себе, что хватит и что пора сократить мой блог до самого необходимого.

Верно. Пришло время перейти на генератор статических сайтов.

Будучи специалистом по JavaScript, я посмотрел, какие генераторы статических сайтов были написаны на JavaScript.

В конце концов я перешел в слесарь по металлу. Мне понравился его минималистичный подход и возможность настройки.

Однако, когда я сел за перенос моего блога Ghost (который был перенесен с WordPress) на мастер по металлу, я обнаружил, что мне нужно обратиться к несметному количеству подключаемых модулей для кузнецов. Чтобы мой блог кузнецов по металлу соответствовал моему блогу Ghost, мне пришлось написать гору настроек.

Так что у меня все заработало, и это было хорошо, но, черт возьми, это было много работы.

Я подумал про себя: «Неужели есть что-нибудь получше?»

Сделай сам

Я нашел эту гору конфигурации довольно хрупкой. Иногда мой блог не компилировался по причинам, о которых я никогда не заботился. Я знал, что мне нужно (снова!) Перейти к чему-то новому.

Самый популярный генератор статических сайтов, написанный на JavaScript (помните: я разработчик JS!), - это hexo. И хотя он, безусловно, зрелый и мощный, он не предоставляет всех функций, которые я хотел бы иметь в своем блоге. В первую очередь мне нужна была поддержка простой нумерации страниц и поддержка страниц с тегами.

Даже когда я посмотрел на Jekyll, он не предоставил нужных мне функций. Если мне нужна была эта функциональность, мне нужно было либо взломать поддержку, либо обратиться к плагину.

В этот момент я подумал: «Хватит, хватит». Так родилась Yarn.

Пряжа

Yarn был создан для обеспечения паритета функций с Ghost, у которого был паритет функций с (аспектом ведения блога) WordPress. Единственная особенность заключалась в том, что Yarn будет генератором статических сайтов. Нет необходимости запускать серверный процесс или беспокоиться о поддержке приложения node.js на вашем веб-хосте.

Все, что вам нужно, это возможность rsync вашего скомпилированного кода, и все готово!

Yarn имеет встроенную поддержку разбивки файлов на страницы, а также поддержку страниц тегов. Он способен к такому поведению благодаря разумным примитивным конструкциям.

Основной строительный блок Пряжа - это коллекции. Yarn проверяет ваши локальные файлы и организует их в коллекции на основе их местоположения в файловой системе или метаданных, содержащихся в файле.

Благодаря этой простой абстракции Yarn может получить большой объем информации. Это позволяет Yarn быть выразительным и гибким, поскольку все, что ему нужно, - это рассказывать, как создавать свои коллекции.

Также Yarn был построен с использованием последней спецификации JavaScript, в частности ES2015 +. Хотя я мог солгать и сказать, что это должно продвинуть сообщество JavaScript вперед, я бы солгал. Мне нравится писать ES2015 + JavaScript. Так писать JavaScript приятнее, и это позволяет сделать код более выразительным и легким для понимания.

Пряжа также была построена так, чтобы на ней было легко строить. Я надеюсь, что участники представят себя и обеспечат Yarn хорошее будущее.

Будущее

Я очень горжусь выпуском версии 1.0.0. Я долго не мог решить, когда перевести Yarn на версию 1.0.0, так как у меня все еще есть много идей о том, что Yarn может делать. Было сложно решить, когда нажать на курок и объявить функцию Yarn завершенной и готовой к первоначальному выпуску.

Я хочу добавить API в Yarn, чтобы создать панель управления для администрирования сайта Yarn. Я хотел бы, чтобы в Yarn было добавлено больше типов коллекций. Я хочу еще много чего сделать!

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

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

Надеюсь, вам понравится Yarn. Впереди 1.0.0 и еще много других версий!

Первоначально опубликовано на hswolff.com.