Замените переменные env в .npmrc на dotenv перед `npm install` - PullRequest
2 голосов
/ 23 апреля 2019

Мне приходится работать с некоторыми пакетами в личном реестре.Итак, в моем package.json в разделе зависимостей у меня есть такие строки:

...
"dependencies": {
    "@myco/my-awesome-package": "^0.4.5",
    ...
}
...

Для частного реестра требуется аутентификация, поэтому мне нужно создать файл .npmrc в моем проекте:

registry=https://registry.npmjs.org/
@myco:registry=https://myco-registry-path/
//myco-registry-path/:username=${MYCO_REGISTRY_USER}
//myco-registry-path/:_password=${MYCO_REGISTRY_PASSWORD_BASE64}

Да, я знаю о _authToken, но в моем случае проще использовать имя пользователя и пароль.

В любом случае, здесь вы можете увидеть две переменные env: ${MYCO_REGISTRY_USER} и ${MYCO_REGISTRY_PASSWORD_BASE64}, которые я должен заменить до npm install.Я знаю очень простое решение этой проблемы: поместите их в «глобальные» переменные env, например, в мой .bash_profile (или любой профиль терминала по вашему выбору).Но я не хочу держать такие переменные в «глобальной» области видимости, потому что они важны только для текущего проекта.Я хочу использовать dotenv .Я хочу создать файл .env в корне моего проекта:

MYCO_REGISTRY_USER=myco-registry-username-value
MYCO_REGISTRY_PASSWORD_BASE64=myco-registry-password-value-base64

Я хочу, чтобы эти значения заменяли переменные env в моем .npmrc в действии установки.Но когда я пытаюсь npm install, я получаю ошибку: Error: Failed to replace env in config: ${MYCO_REGISTRY_USER}.Я могу понять, почему это происходит.Возможно, потому что npm сначала читает .npmrc значения и пытается заменить переменные env и терпит неудачу, потому что в этот момент он ничего не знает о dotenv.У меня вопрос, как с этим бороться?

Краткое резюме:

  1. Я не хочу хранить переменные env в профиле терминала, вместо этого я хочу поместить его вфайл .env внутри моего проекта.

  2. Я должен заменить переменные env в файле .npmrc на dotenv до npm install

...