Как npm установить все каталоги функций с AWS CodeBuild - PullRequest
0 голосов
/ 19 октября 2018

Я использую AWS Cloud Formation для моего бэкенда со следующей структурой файлов проекта:

| template.yaml
| lambda-functions
  | ---- function-1
       |----function.js
       |----package.json
  | ---- function-2
       |----function.js
       |----package.json

В спецификации сборки AWS я делаю aws cloudformation package, за которым следует aws cloudformation deploy.

Если я хочу, чтобы это работало, мне нужно сделать npm install в подпапках function-1 и function-2 и зафиксировать подпапки node_modules в git repo.

Как запустить npm install во всех моих подпапкахнепосредственно из buildspec, поэтому мне не нужно фиксировать подпапки node_modules?

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете использовать lerna .

Lerna также поможет вам, если у вас есть зависимости между вашими пакетами.

В основном вам просто нужно добавить lerna.jsonв корневой каталог и установите свои зависимости с помощью lerna.

lerna.json:

{
  "lerna": "2.11.0",
  "packages": [
    "lambda-functions/*"
  ],
  "version": "0.0.0"
}

Я предполагаю, что вы используете AWS CodeBuild, поэтому вот несколько примеровкак вы можете настроить этап установки:

buildspec.yml с lerna:

version: 0.2
phases:
  install:
    commands:
      - echo Entered the install phase...
      - npm install --global lerna 
      - lerna bootstrap --concurrency=1 -- --production

  ...

lerna bootstrap создаст node_modules для каждого пакета.

Если вы не хотите использовать lerna, вы можете добавить одну команду для каждого пакета.Что-то вроде:

buildspec.yml с пряжей:

version: 0.2
phases:
  install:
    commands:
      - echo Entered the install phase...
      - npm install --global yarn
      - yarn --cwd lambda-functions/function-1 --production install
      - yarn --cwd lambda-functions/function-2 --production install
      - yarn --cwd lambda-functions/function-3 --production install

  ...

или:

buildspec.yml с npm:

version: 0.2
phases:
  install:
    commands:
      - echo Entered the install phase...
      - cd lambda-functions/function-1 && npm install --production
      - cd lambda-functions/function-2 && npm install --production
      - cd lambda-functions/function-3 && npm install --production

  ...
...