尝试将Meteor 0.8中的Crowducate移植到1.0。我跑了“流星更新”。结果可以在这个分支中看到:https://github.com/Crowducate/crowducate.me/commit/bc1c8fa81a23fda586980d4803803ef701c762c5
所以我的问题:
在这些github问题中可以找到更多信息: Porting to Meteor 1.0和flatten external packages into repo
任何帮助表示感谢。
答案 0 :(得分:2)
Meteor确定使用packages
文件应将哪些功能添加到项目中。它包含email
或iron: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足够聪明,知道如果删除一个包而不再捆绑不需要的包依赖项。您需要这两个文件才能更好地区分用户添加的内容以及使用包管理器自动添加的内容。