Woo*_*Dzu 10 javascript ember.js ember-cli broccolijs
有没有办法从Brocfile(或任何其他地方)的构建中排除文件夹.用例是打包,我有一个由pod内的子应用程序组成的应用程序.例如.
/app/modules/components
/app/modules/app1
/app/modules/app2
/app/modules/app3
Run Code Online (Sandbox Code Playgroud)
当环境设置为"开发"或仅限于例如,我想构建它们.环境为'app1'时'app1'.有什么建议?
我尝试了不同的西兰花 - 文件 - 去除剂,西兰花 - 漏斗和西兰花 - 合并树的组合无济于事.
var removeFile = require('broccoli-file-remover');
module.exports = removeFile(app.toTree(), {
paths: ['app/modules/pod1/', 'app/modules/pod2/']
});
Run Code Online (Sandbox Code Playgroud)
啊,所以在真正思考清楚之后,一切实际上都按照我之前的例子中的预期运行。
显然我没有给予足够的重视。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。通常,对于这些类型的情况,我更喜欢 in-repo-addons,因为它们不需要第二个项目,但在其他方面它们是相同的。
npm install --save broccoli-stewvar 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;
}
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1231 次 |
| 最近记录: |