标签: semantic-versioning

无法解析依赖树,但实际上应该满足插入符要求

我在更新 npm 包时遇到问题,这表明我缺乏理解peerDependencies和/或^ caret版本范围。

\n

到现在为止的状态:

\n

我的项目my-app依赖于awesome-lib版本 中的包6.1.0。\n它还依赖于miracle-lib版本 中的包3.2.0-alpha.2

\n

该包miracle-lib@3.2.0-alpha.2有一个peerDependencyto awesome-lib@^6.1.0(注意^ caret)。

\n

跑步npm install跑得很好。\xe2\x9c\x93

\n

现在的情况:

\n

我想使用awesome-lib从一个6.1.0版本更新到另一个版本6.2.0-alpha.1

\n
npm install awesome-lib@6.2.0-alpha.1\n
Run Code Online (Sandbox Code Playgroud)\n

但这会产生以下错误:

\n
npm ERR! code ERESOLVE\nnpm ERR! ERESOLVE unable to resolve dependency tree\nnpm ERR!\nnpm ERR! While resolving: my-app@1.0.0\nnpm ERR! Found: awesome-lib@6.2.0-alpha.1\nnpm ERR! node_modules/awesome-lib\nnpm ERR!   awesome-lib@"6.2.0-alpha.1" from …
Run Code Online (Sandbox Code Playgroud)

javascript dependency-management npm semantic-versioning typescript

5
推荐指数
0
解决办法
146
查看次数

即使使用插入符号 (^),PNPM 安装也不会更新次要版本或补丁版本

PNPM 似乎完全安装了 package.json 中指定的版本,并且似乎没有安装最新的次要版本。

例如,在我的 package.json 中我有这个依赖项 "@tanstack/react-query": "^4.13.5"

但是在安装时,pnpm 给出了这条消息 @tanstack/react-query 4.13.5 (4.29.5 is available)

所以我的问题是,为什么 pnpm不像 npm 使用插入符号那样安装4.29.5 ?我该如何实现这一目标?

npm semantic-versioning reactjs pnpm

5
推荐指数
1
解决办法
1245
查看次数

描述用于语义版本控制的ruby gem公共API

语义版本控制规范中的第一点指出兼容软件必须声明公共API.

我想知道宝石是如何建立这个公共API的.看起来它通常是通过自述文件完成的(例如,参见ActiveRecord),它不觉得它在公共API代码和其他代码之间划出了严格的界限.更好地执行此操作的gem的一个示例是Twitter API,将其公共API代码放在API目录中,但即使在那里,该行也是灰色的,因为公共API的configure方法在API目录之外的twitter.rb中定义.

作为一个试图坚持语义版本控制的宝石的潜在贡献者(这是他们中的大多数,因为我们有像bundler这样的工具),我想知道哪些方法是公共API的一部分,哪些不是.也许我必须查看更多的源代码,但有没有明确定义您的公共API的指导方针?

ruby gem semantic-versioning

4
推荐指数
1
解决办法
130
查看次数

如何理解npm包的package.json文件中的版本控制?

我想知道版本控制package.json在开发周期中的工作原理.

一个package.json版本属性中每个数字的含义是什么,例如下面的那个?

{
    "name": "A NodeJS Project",
    "version": "0.0.0",
    ...
}
Run Code Online (Sandbox Code Playgroud)

node.js npm semantic-versioning

4
推荐指数
1
解决办法
1146
查看次数

Ruby生态系统中Semver的替代品

在红宝石生态系统(甚至其他地方)中是否有功能(即,我可以用它bundlerrubygems替代)SemVer

我对SemVer(MAJOR.MINOR.PATCH)的问题在于它试图量化两个不兼容的东西:

  1. 改变大小(PATCH - 一个小变化)
  2. 向后兼容性(MINOR - 不间断,MAJOR - 打破)

PATCH仍然很可能是一个突破性的变化,这使得它等于MAJOR而小于MINOR,而MINOR小于MAJOR.所以:

  PATCH == MAJOR  && MAJOR > MINOR && MINOR > PATCH
Run Code Online (Sandbox Code Playgroud)

这意味着PATCH <> MINOR同时,这永远不会是真的.

理想情况下,我希望有两个版本控制线 - 一个基于向后兼容性(例如没有破损,可能难以察觉的破损(==补丁),破坏)和一个基于变化大小(无视向后兼容性),一个人性化的版本行,如果你愿意的话.我希望能够同时使用它们.

(仅使用基于纯后向兼容性的版本控制,只要操作系统通过向屏幕写入"hello world"开始,我就可以从"hello world"转到操作系统.)

例如:如果H代表人类友好的版本控制,而B代表向后兼容性是基于后向兼容性的,那么我希望能够说:

  1. 〜> H2.0(==坚持使用H2.X;如果你制作了一个版本H3.0,它增加了200MB的非破坏性附加功能,我不希望你下载它,但确实给我带来了你做的那些不间断的改进H2.0线)
  2. 〜> B0.1(==给我不间断的变化(第3列,相当于Semver的第2列)并可能不知不觉地破坏 变化(第2列,相当于SemVer的第3列))

ruby semantic-versioning

4
推荐指数
1
解决办法
989
查看次数

使用TestFlight进行内部测试时,什么是优秀的iOS应用程序版本控制策略?

我有一个iOS应用程序,它使用语义版本标记来标记已发布的版本.我还使用Apple的TestFlight将内部构建推送到团队进行测试/ QA.

推送内部版本需要将版本上传到iTunes Connect.iTunes Connect的测试版本和发布版本没有区别,iTunes Connect不允许覆盖以前上传的版本.因此,每当我想推出一个新的内部测试版本时,我都要修改版本号(好吧,补丁(XX X)号码).

这工作正常,除了我们的用户看起来我们的版本号在更新之间跳了很多.例如,如果这是我们的构建历史记录:

  • v1.0.0
  • v1.0.1 (在测试中发现了bug)
  • v1.0.2
  • v1.1.0 (在测试中发现了bug)
  • v1.1.1 (在测试中发现了bug)
  • v1.1.2

...然后用户只看到大胆的版本,我们的发布历史看起来很奇怪:

  • v1.0.0
  • v1.0.2
  • v1.1.2

我认为避免这种情况的一个好方法是使用beta版本,例如v1.1.0-beta测试版本,但iTunes Connect拒绝任何不是的版本字符串X.X.X.

有没有办法继续使用TestFlight进行内部测试/ QA,并避免向用户出现填补空白的版本历史记录?

app-store ios testflight semantic-versioning

4
推荐指数
2
解决办法
2724
查看次数

如何从AppVeyor发布beta nuget包

这是我试图在AppVeyor中实现的行为

  1. 构建代码(用Assembly邮件标记1.2.3.{build})
  2. 测试代码
  3. 如果测试通过,则创建nuget包
  4. 如果包成功创建,则发布测试包(1.2.3-beta-{build})
  5. 还可以使用工件包.

理想情况下,在发布nuget包时,它将作为预发行版发布.在NuGet中,这是通过在包版本的末尾添加字母字符来完成的.覆盖现有包也被认为是不好的做法(实际上,许多nuget实现不允许这样做).

AppVeyor可以很好地从github构建和测试软件,但我似乎无法控制nuget软件包版本.

给定:具有下一个语义版本1.2.3的包我希望AppVeyor {version}变量等于1.2.3.{build} 我希望nuget包版本等同于1.2.3-beta-{build}

我尝试的第一件事就是在{version}框中使用变量.显然这是不允许的.AppVeyor似乎只做变量替换,{branch}{build}作为其中的一部分{version}.这意味着我将不得不为语义版本维护一个单独的变量.

我遇到的下一个挑战是无法通过UI设置nuget包版本.它希望默认与AppVeyor构建版本相同.

我决定在测试运行后尝试使用Powershell创建包.这是有效的,但是Nuget Publish步骤想要在创建包之前运行,并且似乎没有办法控制执行顺序.

我想我走错了路.我需要一个概念性的重置.

这是我的appveyor.yml当前(不正确)状态:

version: 0.1.0.{build}
configuration: Release
assembly_info:
  patch: true
  file: '**\AssemblyInfo.*'
  assembly_version: '{version}'
  assembly_file_version: '{version}'
  assembly_informational_version: '{version}'
environment:
  packageVersion: 0.1.0
nuget:
  account_feed: true
  project_feed: true
  disable_publish_on_pr: true
before_build:
- ps: nuget restore
build:
  verbosity: minimal
artifacts:
- path: '*.nupkg'
  name: nuget package
deploy:
- provider: NuGet
  api_key:
    secure: blahblahblah
  artifact: '*.nupkg' …
Run Code Online (Sandbox Code Playgroud)

nuget semantic-versioning appveyor

4
推荐指数
1
解决办法
915
查看次数

使用最新的主要版本

在我的JavaScript应用程序中,我可能在我的package.json文件中声明了几十个依赖项.

需要一段时间才能浏览每个依赖项并查看它们所在的版本.

我只想说:使用最新的主要版本,但不是前沿.

作为一个例子,使用像Git这样的工具我通常不关心在补丁级别进行更改,但如果出现新的主要版本,我会想要它.

在指定npm模块的版本时是否有类似的概念?

node.js npm semantic-versioning

4
推荐指数
1
解决办法
2973
查看次数

究竟什么被认为是对PureScript库的重大改变?

Rust社区对他们对语义版本控制的解释有相当详细的描述.

PureScript社区拥有此功能,其中包括:

我们应该为初学者编写一个semver教程,特别是它在PureScript中的使用以及我们依赖于-versions的方式.

奇怪的是,查看各种各样的65个随机purescript库,它们都使用^ --versions而不是〜-versions,但我一直无法找到任何更新的文档,我们最近由于期望不匹配而导致我们的构建被破坏.

PureScript社区是否对semver有一个合理一致的解释,特别是关于什么是或不被认为是一个突破性变化?如果是这样,它是什么?

semantic-versioning purescript

4
推荐指数
1
解决办法
131
查看次数

重新安装后,npm 找不到模块“semver”

我正在使用 ubuntu 19.04。

尝试使用 npm 执行任何操作时出现以下错误

internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'semver'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/usr/share/npm/lib/utils/unsupported.js:2:14)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
Run Code Online (Sandbox Code Playgroud)

我试图从 SO 中应用不同的解决方案,但不幸的是它们没有奏效。

它在重新安装 NPM 后开始发生,因为我不幸无法重新创建一些错误。

我试过的

sudo apt purge nodejs
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)

经过这两个步骤,npm 就被卸载了。

npm -v
bash: /usr/bin/npm: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我继续

sudo apt install nodejs
Run Code Online (Sandbox Code Playgroud)

但是,即使在我清除了文件后也会发生错误

User@User:/$ node -v
v10.16.3 …
Run Code Online (Sandbox Code Playgroud)

ubuntu npm semantic-versioning

4
推荐指数
2
解决办法
7407
查看次数