Примечание. Пряжа была переименована в 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.