Как организовать структуру проекта на Node.js правильно?

Привет, есть проект на Node.js (webpack, yarn, typescript, react и т.д.) Его структура выглядит следующим образом:
5a5ec4c9e31ef014527996.png
Мне надо проработать две стадии: CI (запуск юнит тестов, сборку, линты) и CD (деплоймент на сервер).

Меня смущает здесь несколько моментов:
  1. Структура проекта. Когда я запустил webpack, yarn то собранный проект собрался в папке dist. Собираю я проект на CI сервере, но потом мне надо его деплоить на другой сервер. Не нравится идея копировать dist и все вложенные папки - сердце подсказывает, что оно сделано очень ugly. Аргументировать не могу, так как это не мой родной стек. Разработчики объясняют это тем, что они используют TypeScript, и он находится в папке src, поэтому вот так все собирается;
  2. node_modules разработчики советуют включить в архив для последующего деплоймента и разворачивания на сервере. То есть, будет копироваться папка dist и node_modules. Не рекомендуют запускать npm install заново на сервере, так как по их мнению могут подтянуться совсем другие версии (как Django разработчик не понимаю как такое реально).


Что хочу я:
  1. Простая и понятная структура папок для проекта;
  2. Минимальный размер архива с проектом для деплоймента;
  3. Использовать docker. Но даже и в нем когда я соберу и установлю, структура папок будет монструозной.


Что вы посоветуете? Спасибо.
  • Вопрос задан
  • 2884 просмотра
Решения вопроса 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
по их мнению могут подтянуться совсем другие версии

Данную проблему решает https://docs.npmjs.com/files/package-lock.json
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Разработчики объясняют это тем, что они используют TypeScript, и он находится в папке src, поэтому вот так все собирается

Логично, нормальное решение.

Не нравится идея копировать dist и все вложенные папки

А в чём проблема? В dist не должно быть лишнего хлама, .git и прочего добра, по сути это готовая сборка приложения для деплоя, почему бы её не скопировать?

Не рекомендуют запускать npm install заново на сервере, так как по их мнению могут подтянуться совсем другие версии

А нехрен позволять npm-у ставить нефриженную версию в package.json. Нам вот уже настохорошело что проект ломается сам по себе из-за выхода новых версий библиотек, и мы зафризили все пакеты. Это нормальная ситуация, если у вас не библиотека, а конечное приложение. package-lock.json пытались использовать, но потом отказались - в версиях NPM 5.0-5.2 он работал отвратительно, сейчас уже может получше, не знаю.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы