Meteor.js 1.0:包和版本文件有什么区别?

时间:2014-11-12 13:34:28

标签: javascript meteor

尝试将Meteor 0.8中的Crowducate移植到1.0。我跑了“流星更新”。结果可以在这个分支中看到:https://github.com/Crowducate/crowducate.me/commit/bc1c8fa81a23fda586980d4803803ef701c762c5

所以我的问题:

  • 为什么创建了一个版本文件(而不是更新包文件)?
  • 版本文件是否会以某种方式覆盖包文件,我是否需要这两个文件?

在这些github问题中可以找到更多信息: Porting to Meteor 1.0flatten external packages into repo

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

Meteor确定使用packages文件应将哪些功能添加到项目中。它包含emailiron:router等软件包的名称。它与您正在运行的Meteor版本无关,这最终会导致严重的问题,除非您有关于哪些版本的软件包可以使用的映射(即已知可以很好地协同工作)。

versions文件进一步指定了您在项目中使用的软件包的实际版本。您可以使用meteor add package:name@x.y.z指定版本。

每个包中都有第三个(隐藏的)版本信息,用于定义它与之匹配的其他包(参见例如this)。他们定义了他们需要的最低版本,更好的可能也会有效。这是智能版本控制方案发挥作用的地方。

Meteor软件包使用语义版本控制,因此您可以更好地判断事情是否会因升级而中断。语义版本控制意味着每个版本都包含major.minor.patch,例如x.y.z或1.1.0。修补程序不会更改功能,因此对z的任何更改都将是无害的。对minor或y的更改不应破坏现有API。可以添加新功能,也可以更改/弃用现有API。对major / x的更改可能会引入重大更改并且还会破坏依赖包。

您可以在Arunoda的页面上找到更多信息:https://meteorhacks.com/meteor-packaging-system-understanding-versioning.html

从技术上讲,你是对的,为什么在这两个文件中都有冗余信息,packages在所有必需信息都在versions内时似乎是多余的。您会注意到packages仅列出您明确添加到项目中的包,而versions也包含所有依赖项。 Meteor足够聪明,知道如果删除一个包而不再捆绑不需要的包依赖项。您需要这两个文件才能更好地区分用户添加的内容以及使用包管理器自动添加的内容。