javascript - meteor .js 1.0 : what is the difference between the packages and versions file?

标签 javascript meteor

尝试移植 Crowducate从 meteor 0.8 到 1.0。我运行了“ meteor 更新”。结果可以在这个分支中看到:https://github.com/Crowducate/crowducate.me/commit/bc1c8fa81a23fda586980d4803803ef701c762c5

所以我的问题:

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

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

感谢任何帮助。

最佳答案

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

versions文件进一步指定您在项目中使用的包的实际版本。您可以使用 meteor add package:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c6a8a7aba386bee8bfe8bc" rel="noreferrer noopener nofollow">[email protected]</a> 指定版本.

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

Meteor 包使用语义版本控制,因此您可以更好地判断升级是否会导致问题。语义版本控制意味着每个版本都包含 major.minor.patch ,例如x.y.z 或 1.1.0。补丁不会改变功能,因此对 z 的任何更改都是无害的。对次要或 y 的更改不应破坏现有 API。可能会添加新功能,或者可能会更改/弃用现有 API。对 Major/x 的更改可能会引入重大更改,并且还会破坏依赖包。

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

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

关于javascript - meteor .js 1.0 : what is the difference between the packages and versions file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888273/

相关文章:

javascript - MomentJs:Meteor 中没有定义时刻?

node.js - 无法在 Meteor 中使用 aws-sdk

javascript - 在 Javascript 中从本地目录读取文本文件

javascript - 我想将选择框的 ID 传递给 Angular JS 中的函数

javascript - 正则表达式构造函数和文字之间的反斜杠差异

javascript - 在 iframe 上滑动,传递点击事件,并且 elementFromPoint 在图像映射区域返回 null

git - Meteor:从 Github 克隆存储库时出错

javascript - Meteor.js 项目和依赖管理

javascript - 谷歌地图自动完成功能不改变 map 位置

javascript - Rails Assets 管道 : Return digest version when non-digest requested