Переключение реестра npm на основе каталога
Недавно я начал развиваться для node. Компания, в которой я работаю, имеет внутренний реестр npm. Я хочу знать, как использовать разные настройки реестра в зависимости от того, где я развиваюсь. Для иллюстрации у меня есть структура каталогов, как показано ниже:
~/Code
|
| -- My Projects
| |
| | -- Proj 1
| | -- Proj 2
|
|-- My Company
|
|--Proj 1
|--Proj 2
Когда я развиваюсь в одном из проектов в "Мой проект", я бы хотел, чтобы реестр npm указывал на https://registry.npmjs.org ( реестр по умолчанию). Но когда я развиваюсь в одном из проектов в "Моя компания", я хочу, чтобы реестр npm указывал на реестр конкретной компании. Прямо сейчас, мой наивный метод - использовать
npm config set registry
для обновления реестра.
Ответы
Ответ 1
Существуют два разных варианта использования частного реестра npm:
-
Установка: используйте флаг --reg
или --registry
:
npm install mypackage --reg http://myreg.npmjitsu.com
-
Публикация: вы также можете использовать --reg
или --registry
, но я настоятельно рекомендую вам использовать параметр publishConfig
в вашем файле package.json
(см. документация npm)
{
"publishConfig": {
"registry": "http://myreg.npmjitsu.com"
}
}
Это позволяет разработчикам случайно публиковать частные модули в публичный реестр, забыв флаг --registry
Итак, добавьте publishConfig
ко всем package.json
для вашей компании, используя --registry
при установке из своего частного npm.
Ответ 2
Реестр должен быть необходим только при установке пакетов. Вы можете использовать это, если хотите установить из частного реестра.
npm install packagename --registry https://myregistryurl
Это тоже может работать.
npm install https://myregistryurl/packagename
и просто установите обычный способ, когда вы используете публичный реестр.
Ответ 3
https://github.com/npm/npm/issues/4751
npm недавно добавила поддержку для файлов .npmrc для каждого пакета, должна делать то, что вы хотите.