npm - 如何为自己的 npm 注册表配置保存前缀
问题描述
我已按默认配置保存前缀以添加“^”作为版本前缀。这适用于我从 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
解决方案
目前 npm 将 0.0.x 形式的版本视为无效的 SemVer ( https://npm.community/t/save-prefix-is-not-prepended-for-major-version-0/4618 )。
我在那个错误报告中表达了我的不同意见,但现在,答案是:
不要在 npm 中使用低于 0.1.0 的版本。
即使它们在SemVer 规范 2.0.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
}
推荐阅读
- regex - 如何使用 Apache calcite LIKE_REGEX
- google-apps-script - 试图了解我在这个 onedit 事件中做错了什么
- python - 使用 django-comments-xtd 时无法加载评论表单
- android - 具有默认值的伴随对象和函数
- python - 双向udp通信在python中不起作用
- ubuntu-16.04 - 如何解决 In-memory PM2 is out-of-date
- node.js - 如何在nodejs的导航栏上显示当前用户名
- python - 点列表中坐标的哪个轴[NumPy]
- python - 在 OpenCV 中设置帧位置永远不会起作用
- python - 将来自单个观察的患者内部数据写入多个文本文件