Привет, разработчики!
Как создать свой проект Node.js? Что важно организовать, чтобы освоить? Итак, давайте посмотрим, что необходимо для создания вашего начального проекта, качества кода, управляемости и масштабируемости
Спойлер: В конце есть github boilerplate repo со всеми конфигурациями.
Поехали!
Базовый
Создание нашего package.json для управления пакетами.
Git alias
Это классная штука, которую можно использовать для оптимизации коммитов, ведь всегда нужно добавлять и коммитить? Так почему бы не автоматизировать это одной командой вместо двух? Красивое форматирование псевдонимов Git тоже может помочь нам лучше отобразить вывод консоли git.
Посмотрите здесь мой gist для обработки всех псевдонимов таким образом.
Обычный линтер коммитов
Вот git linter, заставляющий нас использовать шаблон Conventional Commits
fix
feature
docs
chore
tests
style
refactor
Git
После запуска git init
уже добавьте .gitignore
и туда папки, как:
node_modules
dist
coverage
Хаски и lintStaged для качества кода
Ниже приведена конфигурация .lintstagedrc.json
, которую нужно добавить в корневую папку проекта. Она гарантирует, что коммит будет сделан непосредственно перед исправлением всех проблем с линтами, и все тесты будут в порядке.
{
"*.ts": [
"eslint 'src/**' --fix",
"npm run test:staged"
"git add"
]
}
И здесь .huskyrc.json
, чтобы гарантировать работу esling перед фиксацией:
{
"hooks":{
"pre-commit": "eslint"
}
}
Стандартный стиль Javascript и eslint
Нам нужно знать о стандартном JS, просто используйте eslint, если у вас только Javascript файлы, но если вы используете Typescript, вы можете использовать и плагин ESlint на VSCode.
Настройка скриптов в файле package.json
Вы можете настроить свои скрипты и уже все готово к использованию.
"scripts": {
"lint": "npx eslint .",
"test": "jest"
},
Тестирование библиотеки
При необходимости установите Jest или Mocha, chain, sinon для модульных тестов. Frisby для интеграции тестов и Cypress для End2End тестов.
Docker
Конечно, вам нужно добавить docker-compose.yml
с вашей инфраструктурой (база данных и другие сервисы).
version: '3.1'
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/
Архитектура программного обеспечения
Если вы собираетесь использовать DDD + Clean Architecture, вы можете создать папки с их иерархией.
Получить всю статью можно здесь
Полный шаблон со всеми конфигурациями
Ссылка: https://github.com/luizcalaca/node-typescript-boilerplate-configuration
Контакты
https://www.buymeacoffee.com/calaca