如何为自己的npm注册表配置保存前缀

如何为自己的npm注册表配置保存前缀,npm,verdaccio,Npm,Verdaccio,我已按照默认设置将“^”添加为版本前缀。这对于我从npmjs安装的(非范围和范围)软件包非常有效。但是,对于来自我自己的注册表()的包,它不会附加前缀: > npm install --save @my-scope/my-package > cat package.json ... "dependencies": { "@my-scope/my-package": "0.0.42", } 从我了解到,save前缀是本地的,不受registry或package.json的影响 我

我已按照默认设置将“^”添加为版本前缀。这对于我从npmjs安装的(非范围和范围)软件包非常有效。但是,对于来自我自己的注册表()的包,它不会附加前缀:

> npm install --save @my-scope/my-package
> cat package.json
...
"dependencies": {
  "@my-scope/my-package": "0.0.42",
}
从我了解到,save前缀是本地的,不受registry或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

目前,npm将表单0.0.x的版本视为无效的SemVer()

我在那个bug报告中表达了我的不同意见,但现在,答案是:

不要在npm中使用0.1.0以下的版本

即使它们在SemVer中有效,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
}

它是否适用于您自己的注册表中的非
0.x
包?我必须创建一个,因为我们仍处于早期开发阶段。但是,是的,对于非0.x包,这是有效的。有关于为什么会这样的信息吗?我想你可能想用npm引起一个bug。0.x的前缀行为不同,这要么是错误的,要么是有意的,文档应该提到这一点。将其发布在此处,因此每个人都可以自由参与讨论: