有没有一种方法可以从Brocfile(或任何其他地方)的构建中排除文件夹。用例是包装,其中我有一个由Pod中的子应用组成的应用。例如。
/app/modules/components
/app/modules/app1
/app/modules/app2
/app/modules/app3
我想在环境设置为“开发”或仅将其构建时全部构建它们。当环境为“ app1”时为“ app1”。有什么建议么?
我尝试了西兰花文件删除,西兰花漏斗和西兰花合并树的不同组合,但均无济于事。
var removeFile = require('broccoli-file-remover');
module.exports = removeFile(app.toTree(), {
paths: ['app/modules/pod1/', 'app/modules/pod2/']
});
嗯,因此,在实际考虑清楚这一点之后,一切实际上都按照我之前的示例所预期的那样正常工作。
我显然没有引起足够的重视。app.toTree()
现在已经太晚了,无法执行此操作,因为所有内容均已构建并精简。
幸运的是,ember-cli确实使插件能够在各种生命周期里程碑中修改适当的树。
请参阅:https : //github.com/ember-cli/ember-cli/blob/master/ADDON_HOOKS.md了解有关当前可用的钩子的更多详细信息。
应该做的把戏是Addon.prototype.postprocessTree
。现在,我们有两个选择,我们可以通过构建独立的插件,ember addon
也可以通过创建轻量级的内部仓库插件ember g in-repo-addon
。通常,对于这些类型的情况,我更喜欢回购插件,因为它们不需要第二个项目,但是除此之外,它们是相同的。
npm install --save broccoli-stew
var stew = require('broccoli-stew')
;产生的拉取请求:https : //github.com/WooDzu/ember-exclude-pod/pull/1
注意:我注意到
template
这不是后处理中可用的类型之一,所以我添加了它:https : //github.com/ember-cli/ember-cli/pull/4263(应该是下一个ember-cli版本的一部分) )注意:我们确实希望有一个额外的hook
Addon.prototype.preprocessTree
,以便在构建文件之前就忽略它们。我已经打开了一个相关的问题:https : //github.com/ember-cli/ember-cli/issues/4262
以上步骤的输出
var stew = require('broccoli-stew');
module.exports = {
name: 'remove',
isDevelopingAddon: function() {
return true;
},
postprocessTree: function(type, tree){
if (type === 'js' || type === 'template') {
return stew.rm(tree, '*/modules/pod{1,2}/**/*');
} else {
return tree;
}
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句