web-dev-qa-db-fra.com

Comment définir env var pour une utilisation .npmrc

J'ai besoin d'un module dans mon projet pour télécharger un package npm privé. Pour ce faire, j'utilise un .npmrc fichier pour fournir un jeton en lecture seule nécessaire au téléchargement du package. Pour garder le jeton fourni par npm hors du fichier, je souhaite l'ajouter en tant que variable d'environnement et le laisser se développer dans le fichier. Par exemple:

# .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}

Je ne sais pas comment obtenir ça NPM_TOKEN ajouté à l'env avant d'être référencé pour l'installation. J'ai essayé d'utiliser un script de préinstallation npm:

"preinstall": "NPM_READ_ONLY_TOKEN=my_token_goes_here_foo_bar" **

Mais je reçois toujours la même erreur:

Error: Failed to replace env in config: ${NPM_READ_ONLY_TOKEN}

J'ai essayé de tester avec une commande echo pour voir si preinstall s'exécute avant l'expansion de la variable .npmrc, mais ce n'est apparemment pas le cas. J'obtiendrais l'erreur et ne verrais pas mon journal d'écho. Il me semble manquer quelque chose ici.

Je suis conscient que le fait de placer mon jeton dans package.json va à l'encontre du but de retirer le jeton du fichier .npmrc. J'utilise en fait un service qui fournit des services de configuration env que j'utiliserais pour exécuter une commande et obtenir le jeton nécessaire. Par exemple. TOKEN=config_service_value.

12
skwny

Vous pouvez ajouter la variable d'environnement à votre .bashrc ou un autre fichier Shell de démarrage.

export NPM_TOKEN=my_token_goes_here_foo_bar

1
jonathanhculver

Les documents npmrc sont faux, il s'avère que.

L'expansion variable est $EXPAND_ME, ne pas ${EXPAND_ME}.

1
skwny