前段时间我问如何覆盖sails.js蓝图(CRUD blueprint overriding in sails.js)
使用sails.js的v0.11,我们现在有蓝图(它们很棒:))。
是否可以关闭当前蓝图并将其作为挂钩安装新版本? 来自@ sgress454的这个问题评论(https://github.com/balderdashy/sails/pull/2173#issuecomment-54165548)似乎表明它正在/正在进行中,但我找不到任何更具体的内容。
我知道我可以通过创建api / blueprints文件夹来覆盖,但我的用户通过npm安装更容易使用。
答案 0 :(得分:0)
你是对的,这是可能的。
这实际上是在Sails的核心中发生的事情:https://github.com/balderdashy/sails/tree/master/lib/hooks/blueprints 默认蓝图的加载方式与Installable Hook一样。
您可以继续复制MIT许可代码,然后用您自己的蓝图替换actions
目录的内容。
之后,更新BlueprintController
中的对象index.js
以确保它指向您的文件。
最后,所有的魔法都发生在extendControllerMiddleware
方法中。您可以看到代码将遍历每个控制器以注入您的蓝图。这里的关键点是将_.defaults
的调用替换为_.assign
,因为您的sails挂钩将要覆盖默认蓝图,而不是简单地添加它们(如果它们不存在)。