从Brocfile中的构建中排除文件夹

WooDzu

有没有一种方法可以从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通常,对于这些类型的情况,我更喜欢回购插件,因为它们不需要第二个项目,但是除此之外,它们是相同的。

  1. 灰烬in-repo-addon删除
  2. 我们需要通过安装西兰花炖 npm install --save broccoli-stew
  3. 包括它var stew = require('broccoli-stew');
  4. 将钩子postprocessTree添加到附加组件
  5. 当postprocessTree是我们关注的类型时,请使用花椰菜炖煮去除我们不再关心的目录。

产生的拉取请求: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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章