golang

create-react-app, но для Go?

  • среда, 17 мая 2023 г. в 00:04:36
https://habr.com/ru/articles/732438/

Не хочешь создавать проект сам? И не надо - используй cps!

Я начинал свой путь в разработке с JavaScript/React и всегда, когда я начинал новый проект, то я просто делал `create-react-app .` и не думал на тот счет, что мне надо будет самому создавать файловую структура своего проекта с нуля.

Спустя какое-то время работы с front-end'ом я решил перейти в страшный лес, каким его всегда представляли всякие мемы - back-end. Конечно же я выбрал node.js и начал с express.js. Для меня было необычно, что не было инструмента (или же я плохо искал) для того, чтобы создавать корневую систему директорий самому. Я начал класть все в корень проекта и в этом и не было проблемы до момента, когда надо было расширять проект и начиналась путаница где лежит сервер, а где конфигурации для сервера, БД и т.д.

В силу новизны своих знаний я думал, что вся эта штука с src, config и public нужна конкретно для экосистемы отдельных технологий. В силу новизны своих знаний я думал. Я начал сам создавать директории, потом перешел на Nest.js и забыл про это. И вот я начал учить Golang, а там к тому же еще другая модель структуры проекта.

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

Каждый раз создавать корнюшку - такое себе развлечение.

Так случилось, что я не знал чем себя занять в то время и каждый раз начинал новые проекты. Ну и каждый раз создавал все эти каталоги каждый раз заново. Так а как же линтеры? Я привык, что в react и nest.js у меня сразу

  • инициализированный проект;

  • созданный локальный git репозиторий ;

  • готовая конфигурация для линтера;

  • готовая конфигурация для сборки и запуска;

  • и т.д.;


Думаю уже все поняли к чему я клоню... Да, я подумал, что было бы не плохо упростить жизнь и себе, и людям и написал свою реализацию для Go.

create-project-struct (cps) - это cli-утилита для подготовки вашего проекта на подобии create-react-app. По сути своей это обычный генератор, который не делает ничего особенного, но все же он упрощает жизнь и экономит ваше время, которое вы тратили на самостоятельное создание директорий.

Он еще не доведен до идеала, но он уже является полноценным сборщиком проекта и отлично функционирует и выполняет функции, для которых он создавался. На данный момент он генерирует:

  1. Базовую корневую структуру в соответствии с шаблоном с этого репозитория;

  2. Готовый main.go файл с выводом приветствия;

  3. Создает go.mod с вашей версией Go и именем проекта;

  4. Makefile с параметрами для

    1. run: запуск в dev-режиме;

    2. build: сборка файла в бинарник;

    3. test: запускает все тесты в проекте;

    4. lint: проверка проекта линтером;

  5. Создает локальный git репозиторий;

  6. Создает конфигурационный файл для линтера;

Чтобы проверить как все это работает, потому что и вам тоже может надоесть заниматься этой рутинной и неинтересной задачей, как постоянное создание папочек, для начала надо убедиться, что у вас установлен Golang и Make на машине. После достаточно клонировать этот репозиторий https://github.com/blackmarllbor0/create-project-struct и перейдя в него ввести `make exec`.

Чтобы использовать сборщик, достаточно перейти в место где вы хотите создать проект и ввести `cps .` или, для создания новой директории, вместо точки ввести новое имя проекта.

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

  • 3100194@gmail.com

  • @blakcmarllbor0


Благодарю всех за внимание. Надеюсь, что я смогу кому-нибудь помочь и избавить вас от скучной задачи. Буду так же благодарен за ваши мнения и предложения для развития (если такое вообще возможно или нужно).

Чтобы лучше узнать о проекте, вы так же можете перейти в репозиторий и со всем лично познакомится. До встречи!