I need a module in my project to download a private npm package. To accomplish this, I am using a .npmrc
file to supply a read-only token needed to download the package. To keep the token supplied by npm out of the file, I wish to add it as an environment variable and let it expand in the file. E.g:
# .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
I can't figure out how to get that NPM_TOKEN
added to the env before it is referenced for the install. I tried using an npm preinstall script:
"preinstall": "NPM_READ_ONLY_TOKEN=my_token_goes_here_foo_bar"
**
But I still get the same error:
Error: Failed to replace env in config: ${NPM_READ_ONLY_TOKEN}
I tried testing with an echo command to see if preinstall
runs before the .npmrc variable expansion, but it apparently does not. I would get the error and not see my echo log. I seem to be missing something here.
I'm aware that putting my token in package.json defeats the purpose of pulling the token out of the .npmrc file. I'm actually using a service that provides env config services that I would use to run a command and get the needed token. E.g. TOKEN=config_service_value
.
Run npm config ls -l to see a set of configuration parameters that are internal to npm, and are defaults if nothing else is specified.
The npmrc manages the npm config files. The config setting for npm is gotten from the command line, environment variables and the npmrc files. You can use the npm config command to update and edit the contents of the user and global npmrc files.
You can add the environment variable to your .bashrc
or other startup shell file.
export NPM_TOKEN=my_token_goes_here_foo_bar
Here is how one would set an environment variable in Powershell (Windows 10):
$env:ENV_VARIABLE = 'Value of my environment variable'
And here is the reference link for further study
If you are using zsh
for your terminal. You should put the environment variable in the .zshenv
file.
echo "export NPM_TOKEN=token_goes_here" >> ~/.zshenv
Then you have to restart your terminal and then try echo $NPM_TOKEN
, you should be seeing the value of the environment variable.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With