自动更新本地Meteor包声明的依赖项

时间:2015-12-31 09:51:07

标签: meteor

尝试使本地Meteor软件包的依赖项更新时相当繁琐。

目前,它们在package.js中指定,我必须检查所使用的每个依赖项的最新版本并手动更新。

E.g。

api.use([
    'alanning:roles@1.2.14',
    'aldeed:simple-schema@1.5.3',
    'aldeed:collection2@2.8.0',
    'iron:router@1.0.12',
    'useraccounts:iron-routing@1.12.4'
]);

可以meteor-tool执行此操作,还是有更好的方法来更新软件包'依赖项,在项目中有多个本地包时尤其有用。

2 个答案:

答案 0 :(得分:1)

正如我在评论中提到的那样,在package.js中碰撞依赖版本没有实际价值。它可能会导致反作用并打破版本解析。

期望提及最小兼容版本(具有相同的主版本号)。当您的本地程序包更新时,其.versions文件也会更新,这可能暗示构建系统使用哪个版本的依赖项是您首选使用的(依赖于您的程序包)。

我能给出的最接近的答案就是David Greenspan的引用* taken from the Meteor forums

  

随着时间的推移,我们对流星更新做了一些小改进,但是   我们没有办法让包请求其中一个依赖项   要更积极地升级。没有参数的流星更新会   将补丁更新带到间接依赖关系,但不是次要版本。一世   最近改进了流星更新打印的消息,所以在   下一个版本,它应该告诉你是否存在间接依赖   它运行后的最新版本(而不是打印错误   消息“所有包都是最新的兼容版本”。)

     

如果你碰到一个包的次要版本,我认为期望   现在是你将重新发布依赖它的包   如果你想让他们的用户获得新版本(在运行之后)   测试以确保一切顺利。)

因此,当您依赖的软件包的作者发布一个新的:

  • 补丁版:您无需做任何事情。新版本应自动使用。
  • 次要版本:检查一切是否正常并发布新的修补程序版本,以确认新版本。
  • 主要版本:事情有望中断。根据semver规则进行必要的更改和发布。

我不会指望现在的行为,因为包装系统经历了非常重要的返工,以便与NPM更加兼容(包括直接需要来自Meteor的NPM包的能力)应用程序和软件包),预计将包含在v1.3中。

*(实际上,Sacha Greif发布了报价)。

答案 1 :(得分:0)

这是来自文档:

  

通常,您必须指定包的版本(例如,   ' accounts@1.0.0'使用版本1.0.0或更高版本的兼容版本   (例如:1.0.1,1.5.0等)的账户包)。如果你是采购   来自带有versionsFrom的Meteor版本的核心软件包,您可以离开   关闭核心软件包的版本名称。您也可以指定约束,   比如my:forms@=1.0.0(这个包需要我的:1.0.0表格   确切),或我的:forms@1.0.0 || = 2.0.1(我的:形式为1.x.y,或者完全是   2.0.1)。

所以答案是,它不会更新你的package.js脚本,但会下载最新的兼容版本,具体取决于你的设置。