Как настроить save-prefix для собственных реестров npm - PullRequest
0 голосов
/ 11 января 2019

У меня save-prefix , настроенный по умолчанию для добавления '^' в качестве префикса версии. Это хорошо работает для (с незаданной областью и областью действия) пакетов, которые я устанавливаю из npmjs. Однако для пакетов, которые приходят из моего собственного реестра ( verdaccio ), к нему не добавляется префикс:

> npm install --save @my-scope/my-package
> cat package.json
...
"dependencies": {
  "@my-scope/my-package": "0.0.42",
}

Из этого вопроса Я узнал, что префикс сохранения является локальным и не зависит от реестра или package.json.

Нужно ли локально настраивать префикс сохранения для моего реестра? Если так: как / где?

Любые другие идеи о том, почему '^' не добавляется для пакетов из моего собственного реестра?

Мой .npmrc выглядит так:

@oblamatik:registry=https://npm.dev.***********.ch
//npm.dev.oblamatik.ch/:_password="***************"
//npm.dev.oblamatik.ch/:username=ci
//npm.dev.oblamatik.ch/:email=ci@***********.ch
//npm.dev.oblamatik.ch/:always-auth=true

1 Ответ

0 голосов
/ 15 января 2019

В настоящее время npm рассматривает версии формы 0.0.x как недопустимые SemVer (https://npm.community/t/save-prefix-is-not-prepended-for-major-version-0/4618).

Я выразил свое несогласие с этим сообщением об ошибке, но на данный момент ответ таков:

Не используйте версии ниже 0.1.0 с npm.

Даже если они являются действительными SemVer по состоянию на Спецификация SemVer 2.0.0 , npm обрабатывает их по-разному. Для справки: выдержка из кода, опубликованная разработчиком npm в отчете об ошибке:

if (isRegistry(requested)) {
    var version = child.package.version
    var rangeDescriptor = ''
    if (semver.valid(version, true) &&
        semver.gte(version, '0.1.0', true) &&
        !npm.config.get('save-exact')) {
      rangeDescriptor = npm.config.get('save-prefix')
    }
    return rangeDescriptor + version
}
...