(相关的,非常相似,但与this question不一样,因为我的问题是寻找通过npm install
丢失和重新获取node_modules的场景以及保持deps当前的主题总的来说。)
让A成为版本a1中的插件,让B成为版本b1中该插件的bower依赖项。插件通过默认蓝图(如
)安装其bower包afterInstall: function() {
// b1 is the version.
return this.addBowerPackageToProject('B', 'b1');
}
现在让C成为消耗A的应用程序。当使用ember install A
bower包实际安装在C中。到此为止,一切都很好。现在A 更新到版本a2,包括版本b2中的B.在C中,
rm -R node_modules
npm cache clean
npm install
(在没有node_modules的情况下检出C并且运行npm install会遇到类似的问题,如果bower.json是旧的) 将获取A.a2。
如果蓝图是手动运行的,实际上会提示B.b2,也就是说,您现在可以看到该项目有一个比尔冲突,并询问如何解决它。
我现在试了一下,它没有用。如果我为npm(ember g testaddon
)指定一个postinstall脚本,它也不起作用(因为npm尝试以不同的顺序安装软件包,并且在安装后脚本时没有安装ember-cli运行)。
如果必须手动检查 ,那么让蓝图传播bower依赖项有什么用呢?我错误地理解了这个吗?这是预期的行为吗?
答案 0 :(得分:1)
我完全同意。 ember-cli目前在升级或卸载npm软件包时什么都不做,这对插件来说是一个问题。插件应该能够指定在版本升级和卸载时运行的蓝图。或者,应该有一个'ember upgrade'和'ember uninstall'命令来运行这些蓝图(如果有的话)。
然后,插件可以在升级蓝图中导致C安装B.b2(如果尚未安装)。
任何想要正式提出此建议的人,这样做的方式是在https://github.com/ember-cli/rfcs
打开拉取请求