#34211·nx

`nx release`: 与独立项目关系的回归

作者: Badisi创建于 2026年1月24日更新于 2026年9月17日
标签type: bugscope: releasepriority: high

当前的行为

自从v22'以来,我在独立项目的nx发布'期间面临许多倒退。

审议如下:

项目/
- 丽巴
- 文件A.ts
- 套件.json(1.0版)
- 利贝
- package.json(1.0版,音译:libA)
nx.json(项目关系:独立)
读取

• 倒退1

  1. 修改`项目/libA/filesA.ts'
  2. 以 " feat(A):更改 " 的形式提出修改。
  3. 运行`nx发布版本-项目=libA-干-运行'
  4. 扫盲教育的成果版本为1.0.1'(而不是1.1.0')。

这是由于: https://GitHub.com/nrwl/nx/blob/a15881db1a12cc2e2ddd0000f7aa576f4606a410a/packages/nx/src/command-line/release/utils/semver.ts#L43-L48 现在有一个Contig.use CommitScope'是默认的真实'。 而扩大项目承诺'显然是虚假'的,因为其范围是A'(而不是libA')。

这显然是一个突破性的变化 在v22,我可能错了... ...

幸运的是, https://GitHub.com/nrwl/nx/issues/33686 (英语). https://GitHub.com/nrwl/nx/pull/33382 (英语).

> 修补

使用"nx.json#放行". Conventional Committs.use ConmitScope: false".

但是,在默认情况下使这个配置成真,对我来说似乎不是正确的想法.

后退 2

  1. 对`README.md'作出修改
  2. 将修改作为`任务:更新读取'
  3. 运行`nx发布-干-运行'版本
  4. " libA " 和 " libB " 将出现一个版本起落。

这也是v22的突破性变化. 修改非项目文件不应影响发布期间的项目.

v22 之前已过滤出非工程文件, 但此部分已被删除 : https://GitHub.com/nrwl/nx/pull/32915.files#diff-8eb063679cb409022dbf351f7017d1b49fd1e643ac0150b6d0669a475bbc5c65L364-L366

> 临时固定

和以前一样过滤非项目文件 。

现在, " libA " 和 " libB " 都不再引起释放。

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? / 将受影响的文件转换为文件 Change 格式, 并进行适当的 diff 计算 let touch Files = (0, 文件 utils 1. 计算FileChanges) (承诺. 受影响的) 文件,{ 基础:`${承诺.shortHash}, 头部: 投入.shortHash,

  • ;
  • const { fileMap} = 等待创建 FileMapUsing ProjectGraph(项目Graph);
  • 被触摸的Files = 被触摸的Files.filter(tf QQ!!fileMap.nonProjectFiles.some(npf QQnpf.f.file QQtf.f.file));

// 使用与“ nx 受影响” 相同的受影响检测逻辑 const 受影响的Graph = 等待 (0, 受影响的 project graph 1. filter 受影响的) (projectGraph, 有触摸的Files );


                                       

由于v22,项目的相关承付额的计算方法是以`nx受影响 ' 为依据,而不是以该承付额所触碰的文件为依据。 这种改变可能有很好的理由,但它显然给独立项目带来了倒退。

1. 修改`项目/libA/filesA.ts'
2. 以 " feat(A):更改 " 的形式提出修改。
3. 运行`nx发布版本-项目=libB-干-运行'
4. LibB的成果版本为`1.1.0'(而不是`1.0.1')

" libB " 的唯一改动应当是:
. . . . . . .