npm
NORA предоставляет полностью совместимый npm-реестр. Публикуйте приватные пакеты и прозрачно проксируйте публичные пакеты из официального реестра npm.
Настройка клиента
Заголовок раздела «Настройка клиента»Направьте npm (или yarn/pnpm) на NORA:
# npmnpm config set registry http://nora.example.com:4000/npm/
# yarnyarn config set registry http://nora.example.com:4000/npm/
# pnpmpnpm config set registry http://nora.example.com:4000/npm/Публикация пакета:
npm publish --registry http://nora.example.com:4000/npm/Настройка .npmrc для конкретного проекта:
registry=http://nora.example.com:4000/npm/Проксирование upstream
Заголовок раздела «Проксирование upstream»Если пакет не найден локально, NORA загружает его из upstream-реестра. URL тарболов в метаданных перезаписываются для загрузки через NORA.
config.toml:
[npm]enabled = trueproxy = "https://registry.npmjs.org"proxy_timeout = 30metadata_ttl = 300 # секундыПеременные окружения:
| Переменная | Описание | По умолчанию |
|---|---|---|
NORA_NPM_ENABLED | Включить реестр npm | true |
NORA_NPM_PROXY | URL upstream-реестра | https://registry.npmjs.org |
NORA_NPM_PROXY_AUTH | Аутентификация upstream (user:pass) | — |
NORA_NPM_PROXY_TIMEOUT | Таймаут upstream в секундах | 30 |
NORA_NPM_METADATA_TTL | TTL кеша метаданных в секундах | 300 |
Возможности
Заголовок раздела «Возможности»| Функция | Статус | Примечание |
|---|---|---|
| Метаданные пакета (GET) | Полная | JSON со всеми версиями |
Scoped-пакеты (@scope/name) | Полная | URL-кодированный путь |
| Скачивание тарболов | Полная | Проверка SHA256 |
| Перезапись URL тарболов | Полная | Указывает на NORA, а не на upstream |
Публикация (npm publish) | Полная | Иммутабельные версии |
| Upstream-прокси | Полная | Настраиваемый TTL |
| Unpublish | — | Не реализовано |
Dist-теги (latest, next) | Частичная | Читаются из метаданных, без явного управления |
Поиск (/-/v1/search) | — | Не реализовано |
| Аудит безопасности | — | Не реализовано |
Известные ограничения
Заголовок раздела «Известные ограничения»- Unpublish не поддерживается — опубликованные версии являются иммутабельными.
- Dist-теги считываются из upstream-метаданных, но не могут быть явно управляемы через NORA.
- Поиск пакетов и endpoint аудита безопасности не реализованы.