create-react-app, но для Go?
Не хочешь создавать проект сам? И не надо — используй 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. По сути своей это обычный генератор, который не делает ничего особенного, но все же он упрощает жизнь и экономит ваше время, которое вы тратили на самостоятельное создание директорий.
Он еще не доведен до идеала, но он уже является полноценным сборщиком проекта и отлично функционирует и выполняет функции, для которых он создавался. На данный момент он генерирует:
Базовую корневую структуру в соответствии с шаблоном с этого репозитория;
Готовый main.go файл с выводом приветствия;
Создает go.mod с вашей версией Go и именем проекта;
Makefile с параметрами для
run: запуск в dev-режиме;
build: сборка файла в бинарник;
test: запускает все тесты в проекте;
lint: проверка проекта линтером;
Создает локальный git репозиторий;
Создает конфигурационный файл для линтера;
Чтобы проверить как все это работает, потому что и вам тоже может надоесть заниматься этой рутинной и неинтересной задачей, как постоянное создание папочек, для начала надо убедиться, что у вас установлен Golang и Make на машине. После достаточно клонировать этот репозиторий https://github.com/blackmarllbor0/create-project-struct и перейдя в него ввести `make exec`.
Чтобы использовать сборщик, достаточно перейти в место где вы хотите создать проект и ввести `cps .` или, для создания новой директории, вместо точки ввести новое имя проекта.
Сам этот проект открыт для ваших комментариев, критики, предложений и изменений. Если вы хотите помочь ему развиваться как open-source, то можете написать мне на почту или в телеграм.
3100194@gmail.com
@blakcmarllbor0
Благодарю всех за внимание. Надеюсь, что я смогу кому-нибудь помочь и избавить вас от скучной задачи. Буду так же благодарен за ваши мнения и предложения для развития (если такое вообще возможно или нужно).
Чтобы лучше узнать о проекте, вы так же можете перейти в репозиторий и со всем лично познакомится. До встречи!