Есть ли способ кэшировать глобальные модули NodeJS в AWS CodeBuild?
Я использую LernaJS для управления своим хранилищем, и каждый раз, когда начинается сборка, я устанавливаю его с помощью команды npm install -g lerna
(это занимает 30 секунд).
Чтобы справиться с этим, сначала я выяснил, где npm установил Lerna с помощью команды npm list -g
и вернул
/usr/local/lib
├─┬ grunt@1.0.4
│ ├── coffeescript@1.10.0
...
├─┬ lerna@3.14.1
│ ├─┬ @lerna/add@3.14.0
│ │ ├── @lerna/bootstrap@3.14.0 deduped
...
Затем я попытался кэшировать папку /usr/local/lib/node_modules/**/*
и получил следующую ошибку:
[Container] 2019/05/30 20:09:00 Running command npm install -g lerna
/codebuild/output/tmp/script.sh: 4: /codebuild/output/tmp/script.sh: npm: not found
[Container] 2019/05/30 20:09:00 Command did not exit successfully npm install -g lerna exit status 127
[Container] 2019/05/30 20:09:00 Phase complete: INSTALL State: FAILED
[Container] 2019/05/30 20:09:00 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: npm install -g lerna. Reason: exit status 127
Итак, я проверил содержимое /usr/local/lib/node_modules/
У меня были следующие пакеты:
[Container] 2019/05/30 20:19:11 Running command ls /usr/local/lib/node_modules
grunt
grunt-cli
lerna
npm
webpack
Моей последней попыткой был кеш /usr/local/lib/node_modules/lerna/**/*
. Таким образом, ошибка не выдается, но кеш также не работает:
[Container] 2019/05/30 20:30:00 MkdirAll: /codebuild/local-cache/custom/656f09faf2819a785eae5e09f5d26a44ff4f20edf155297d6819c9600540cd26/usr/local/lib/node_modules/lerna
[Container] 2019/05/30 20:30:00 Symlinking: /usr/local/lib/node_modules/lerna => /codebuild/local-cache/custom/656f09faf2819a785eae5e09f5d26a44ff4f20edf155297d6819c9600540cd26/usr/local/lib/node_modules/lerna
...
[Container] 2019/05/30 20:30:01 Running command npm install -g lerna
/usr/local/bin/lerna -> /usr/local/lib/node_modules/lerna/cli.js
+ lerna@3.14.1
added 650 packages from 321 contributors and updated 1 package in 40.628s
Я что-то упустил? Есть ли способ сохранить Лерну как grunt
, grunt-cl
, npm
и webpack
(внутри /usr/local/lib/node_modules/
) до начала строительства?
Спасибо!