In new Elastic Beanstalk Linux 2 Platforms, none of these solutions work (apart from the .npmrc
file solution that works but has its issues when using them in development evironments due to the requirements that all developers have their ${NPM_TOKEN}
Env Var defined in their own environments).
The reason is that the /tmp/.npmrc
location no longer works.
Option 1
You have to change the .ebextensions/npm.config
file to this new format:
files:
#this is the npm user config file path
"/root/.npmrc":
mode: "000777"
owner: root
group: root
content: |
_auth= ${NPM_TOKEN}
registry = https://{yourprivatenpmrepository.com}/
Option 2
Add a custom .npmrc_{any-suffix} to the root of your app and create a prebuild hook to rename it before Beanstalk executes the npm install
so that it can use your private repository configuration:
- Add the following file (path from your app root)
.platform/hooks/prebuild/01_set_npmrc.sh
with the following content:
#!/bin/bash
#Copy and rename .npmrc_beanstalk to .npmrc
mv .npmrc_beanstalk .npmrc
- Create an
.npmrc_beanstalk
file in your root with the following content (modify it depending on your private npm config):
_auth= ${NPM_TOKEN}
registry = https://{yourprivatenpmrepository.com}/
- Chmod the hook file so that it has the necessary exec permissions when uploaded to EB:
chmod +x .platform/hooks/prebuild/01_set_npmrc.sh
Re-deploy using EB CLI and you are done!
${NPM_TOKEN}
never gets replaced by its value. It is set in the environment variable. Is there which neds to be done? – Iou