Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Области npm помогают классифицировать связанные пакеты в группы. Они позволяют создавать пакеты с теми же именами, что и пакеты, созданные другими пользователями без конфликтов. Используя пространства имён, можно разделить публичные и частные пакеты, добавив префикс пространства имён @scopeName и настроив файл .npmrc для использования источника с этим пространством имён.
Azure Artifacts поддерживает публикацию и загрузку пакетов с областью видимости и без неё из каналов или общедоступных реестров. Области npm особенно полезны при работе с локальными серверами, не имеющими доступа к Интернету, так как настройка вышестоящих источников в этих сценариях невозможна. Итак, при использовании областей видимости:
- Вам не нужно опасаться конфликтов имен.
- Вам не нужно изменять реестр npm для установки или публикации пакетов.
- У каждой организации или пользователя в npm есть собственная область видимости, и только владелец или участники этой области видимости могут публиковать в ней пакеты.
Prerequisites
| Продукт | Requirements |
|---|---|
| Azure DevOps | — Организация Azure DevOps. — Azure DevOps project. — Azure Artifacts feed. — Скачивание и установка Node.js и npm. |
Подключиться к вашей ленте новостей
Перед настройкой областей npm подключите проект к веб-каналу Azure Artifacts. Убедитесь, что вы выполнили необходимые условия и создадите веб-канал, а затем выполните следующие действия.
Azure Artifacts рекомендует использовать два отдельных NPMRC-файла. Храните один файл в вашем пользовательском каталоге для хранения учетных данных, а второй — в том же каталоге, что и файл package.json, для хранения конфигурации, специфичной для источника пакетов.
Войдите в Azure DevOps, а затем перейдите в проект.
Выберите Артефакты и выберите ваш канал в раскрывающемся меню.
Выберите "Подключиться к каналу" и выберите npm в области навигации слева.
Если вы впервые используете Azure Artifacts с npm, выберите "Получить средства" и следуйте инструкциям по установке необходимых компонентов для операционной системы. Сначала необходимо установить Node.js и npm. Затем в зависимости от операционной системы установите vsts-npm-auth для Windows или настройте учетные данные для сред, отличных от Windows. Инструкции, отличные от Windows, см. в разделе "Подключение к каналу " Другие".
Создайте NPMRC-файл в том же каталоге, что и файл package.json, а затем вставьте фрагмент из раздела установки Project в этот файл.
В Windows выполните следующую команду, чтобы добавить маркер Azure Artifacts в NPMRC-файл на уровне пользователя. Эта команда не требуется выполнять каждый раз. Когда срок действия токена истекает, npm возвращает ошибку 401 Unauthorized, что означает, что его пора обновить.
vsts-npm-auth -config .npmrc
Note
vsts-npm-authне поддерживается в Azure DevOps Server. Инструкции, отличные от Windows, см. в разделе "Подключение к каналу " Другие".
Настройка диапазона
Чтобы использовать области видимости с Azure Artifacts, обновите файл .npmrc проекта так, чтобы пакеты с областью видимости, которые вы публикуете или устанавливаете, разрешались через ваш канал. Замените registry=<YOUR_SOURCE_URL> на @ScopeName:registry=<YOUR_SOURCE_URL>.
Также обновите файлpackage.json, чтобы включить имя области и имя пакета, например: { "name": "@ScopeName/PackageName" } В следующих примерах показано, как настроить ленты на уровне организации и проекта.
Лента, охватывающая всю организацию:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/{ "name": "@ScopeName/PackageName" }Лента, ограниченная рамками проекта:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/{ "name": "@ScopeName/PackageName" }
Example
NPMRC-файл:
@local:registry=https://pkgs.dev.azure.com/FabrikamOrg/NpmDemo/_packaging/FabrikamFeed/npm/registry/Файл package.json :
{ "name": "@demo/js-e2e-express-server", "version": "2.0.0", "description": "JavaScript server written with Express.js", "main": "index.js", "directories": { "doc": "docs", "test": "test" } }
Публикация пакетов с областью действия
После настройки области и обновления файлов проекта откройте окно командной строки, перейдите в каталог проекта и выполните следующую команду, чтобы опубликовать пакет с областью действия. В предыдущем примере пакет публикуется в области видимости @local.
npm publish
Восходящие источники и области
Вышестоящий источник обеспечивает большую гибкость. Используя восходящие источники, вы можете получать как пакеты с областью, так и пакеты без области из канала Azure Artifacts, а также использовать пакеты из общедоступных реестров, таких как npmjs.com. Этот подход хорошо работает, если нужно, чтобы один канал служил основным источником как для внутренних пакетов, так и для одобренных внешних зависимостей.
Области видимости более ограничены, но в подходящем случае они всё же могут быть практичным решением. При использовании областей каждое имя пакета должно начинаться с @<scope>, что означает, что необходимо принять и сохранить это соглашение об именовании в пакетах. Например, если вы публикуете пакет как @local/my-package, необходимо продолжать использовать это имя в любой точке ссылки на пакет.
Это требование может добавить дополнительные расходы, особенно если вы планируете опубликовать те же пакеты в общедоступном реестре позже. При удалении областей при развертывании пакетов необходимо также обновить соответствующие ссылки в файлахpackage.json и любых зависимых проектах.
Даже с этими ограничениями области видимости могут служить вполне подходящей альтернативой, когда использование вышестоящих источников нецелесообразно. Это особенно актуально в изолированных или самостоятельно размещаемых средах, где нет доступа к общедоступным реестрам и где вы хотите избежать конфликтов имён пакетов, сохраняя при этом упорядоченность пакетов в вашем канале.