Мне приходится работать с некоторыми пакетами в личном реестре.Итак, в моем 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.У меня вопрос, как с этим бороться?
Краткое резюме:
Я не хочу хранить переменные env в профиле терминала, вместо этого я хочу поместить его вфайл .env
внутри моего проекта.
Я должен заменить переменные env в файле .npmrc
на dotenv до npm install