为什么无限制的版本约束是一个坏主意?
没有上限的版本约束(如 *、>=3.4 或 dev-master)将允许依赖项更新到任何未来版本,包括那些破坏向后兼容性的主要版本。
一旦你的包发布了某个版本标签,在依赖项破坏 BC(向后兼容性)时你将无法再调整其依赖关系——你必须发布一个新版本,但之前的版本仍然处于损坏状态。
唯一的良好替代方案是在约束条件中定义一个上限,这样你可以在测试包与依赖项的新主要版本兼容后,在新版本中提高这个上限。
例如,你应该使用 ^3.4 而不是 >=3.4,因为前者允许所有到 3.999 的版本,但不包括 4.0 及以上版本。^ 操作符与遵循 语义化版本控制 的库配合得很好。
注意
作为包维护者,你可以通过为你的开发分支提供 别名版本 来帮助用户,使其能够匹配有界约束。