Node.JS Browser

Данная конфигурация подходит если проект использует окружение node.js и пакетный менеджер npm для сборки приложения для работы в браузере. В этом случае проект может быть написан на таких языках как JavaScript или TypeScript. Данная конфигурация предназначена для браузерных приложений. Для серверных приложений см. Node.JS Server.

Написать yaml файл можно как самостоятельно, используя инструкцию ниже, так и воспользоваться нашим генератором yaml, перейдя по ссылке.

Секция meta

Секция meta файла amvera.yml будет выглядеть следующим образом:

meta:
  environment: node
  toolchain:
    name: browser
    version: 18

Из параметров, которые можно здесь менять это meta.toolchain.version. Логически это версия node.js, которую нужно использовать для работы. Технически значение version подставляется в имя образа Docker, который будет использован.

Для фазы сборки используется образ node:${meta.toolchain.version}. Так как для фазы запуска node.js вообще не используется, meta.toolchain.version может быть любым тегом этого образа на докер хабе.

Секция build

Секция build может содержать следующие необязательные параметры:

  • additionalCommands

  • artifacts

Во время сборки скрипт выполняет команду npm install && npm run build. Если будет задан параметр additionalCommands, то будет выполнена команда npm install && ${build.additionalCommands}. Это может пригодиться, если в проекте команда сборки называется не build.

build:
  additionalCommands: npm run amvera:build

Параметр artifacts позволяет указать какие файлы должны попасть в итоговое приложение. По умолчанию будут скопированы все файлы из папки build в корень папки приложения.

Параметр artifacts в отличие от других параметров это не строка, а словарь. Ключ в нем это маска файлов источника копирования, а значение: папка, в которую будут скопированы файлы.

Так, значение artifacts по умолчанию:

build:
  artifacts:
    "build/*": /

Мы используем следующие правила копирования:

  • в качестве источника указываются только относительные пути (без / в начале);

  • если под маску попал файл, файл будет скопирован в папку назначения без исходного пути;

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

Секция run

Для запуска используется модифицированный образ nginx:1.23.2 для поддержки маршрутизации в SPA приложениях.

В секции run нет настраиваемых параметров.

Рецепты

React

meta:
  environment: node
  toolchain:
    name: browser
    version: 18

Vue

meta:
  environment: node
  toolchain:
    name: browser
    version: 18

build:
  artifacts:
    "dist/*": /

Angular

meta:
  environment: node
  toolchain:
    name: browser
    version: 18

build:
  artifacts:
    "dist/my-app/*": /