Javascript 从文件中的生成中排除文件夹
是否有方法将文件夹从文件(或任何其他位置)中的生成中排除。 用例是打包,我有一个由pods中的子应用程序组成的应用程序。例如Javascript 从文件中的生成中排除文件夹,javascript,ember.js,ember-cli,broccolijs,Javascript,Ember.js,Ember Cli,Broccolijs,是否有方法将文件夹从文件(或任何其他位置)中的生成中排除。 用例是打包,我有一个由pods中的子应用程序组成的应用程序。例如 /app/modules/components /app/modules/app1 /app/modules/app2 /app/modules/app3 我希望在环境设置为“开发”时构建它们,或者在环境设置为“app1”时仅构建“app1”。有什么建议吗 我尝试过不同组合的花椰菜锉刀,花椰菜漏斗和花椰菜合并树都没有用 var removeFile = require(
/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/']
});
我很有信心西兰花炖菜的rm会正确处理这个问题 甚至还有测试非常类似的场景的测试:
如果这不起作用,请随意打开一个关于炖花椰菜的问题。请务必提供一个运行的示例,尽管啊,因此,在实际清楚地考虑了这一点之后,所有操作实际上都完全按照我前面示例中的预期工作 我显然没有给予足够的关注
app.toTree()
太晚了,无法执行此操作,因为所有内容都已构建和实现
幸运的是,ember cli确实允许插件在不同的生命周期里程碑修改适当的树
有关当前可用的挂钩的更多详细信息,请参阅
实现这一技巧的钩子是Addon.prototype.postprocessTree
。现在我们有两个选择,我们可以通过ember插件
构建一个独立的插件,或者通过ember g in repo插件
创建一个轻量级in repo插件。通常对于这些类型的情况,我更喜欢在repo插件中,因为它们不需要第二个项目,但在其他方面它们是相同的
npm安装来安装西兰花炖菜——保存西兰花炖菜
var stew=require('brocoli-stew')
李>
template
不是后处理中可用的类型之一,所以我添加了它:(应该是下一个ember cli版本的一部分)
注意:我们确实需要一个额外的钩子
Addon.prototype.prepretree
,以便在我们
甚至建造它们。我打开了一个相关的问题:
以上步骤的输出
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;
}
}
};
这真的很晚了,但我创建了一个花椰菜插件来实现这一点。可以在 (诀窍是检测排除的路径是否为文件夹,然后使用全局匹配以确保在复制过程中没有文件夹的子项被符号链接。)
你好,斯蒂芬。到目前为止还没有欢乐。我已经创建了一个存储库来重现该问题,我是否应该报告在stew.rm()中内部使用的Brocoli stew或Brockli漏斗?是否可以在testsLike删除过程中不运行这些步骤,是否有方法将特定文件夹从监视更改中排除,例如。,排除用于实时重新加载的文件夹?在将INF ember cli从3.3.0更新到3.4.0之后,此操作将不再有效欢迎使用堆栈溢出!虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。
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;
}
}
};
var rm = require('broccoli-rm');
var input = app.toTree();
module.exports = output = rm([input], {
paths: ['app/modules/pod1', 'app/modules/pod2']
});