1

(相关,非常相似,但与这个问题不同,因为我的问题是寻找 node_modules 丢失并重新获取的场景,以及npm install保持 deps 最新的主题。)

让 A 成为版本 a1 中的插件,让 B 成为版本 b1 中该插件的凉亭依赖项。插件通过默认蓝图安装其 bower 包,例如

afterInstall: function() {
    // b1 is the version.
    return this.addBowerPackageToProject('B', 'b1');
}

现在让 C 成为使用 A 的应用程序。当 A 安装时使用ember install A

bower 包实际上是安装在 C 中的。到这里为止,一切都很好。现在A更新到a2版本,包括b2版本中的B。在 C 中,

rm -R node_modules
npm cache clean
npm install

(如果 bower.json 是旧的,检查没有 node_modules 的 C 并运行 npm install 会遇到类似的问题)将获取 A.a2。

  • A.a2 的默认蓝图是否应该运行并导致 C 也安装 B.b2?(这是这里提出的实际问题)

如果蓝图是手动运行的,B.b2 实际上会得到提示,也就是说,您会看到项目现在有凉亭冲突,并被询问如何解决它。

我现在试了一下,不行。如果我为 npm ( ember g testaddon) 指定安装后脚本,它也不起作用(因为 npm 尝试以不同的顺序安装软件包,并且在安装后脚本运行时未安装 ember-cli)。

如果必须手动检查蓝图,那么让蓝图传播凉亭依赖关系有什么好处我理解错了吗?这是预期的行为吗?

4

1 回答 1

1

我完全同意。ember-cli 目前对 npm 包的升级或卸载没有任何作用,这对于插件来说是个问题。插件应该能够指定在版本升级和卸载时运行的蓝图。或者,如果可用,应该有运行此类蓝图的“ember 升级”和“ember 卸载”命令。

然后,该插件可以在升级蓝图中使 C 安装 B.b2(如果尚未安装)。

任何想正式提出这个建议的人,这样做的方法是在https://github.com/ember-cli/rfcs打开一个拉取请求

于 2016-02-04T15:40:15.890 回答