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

标签 javascript ember.js ember-cli broccolijs

有没有办法从 Brocfile(或任何其他地方)的构建中排除文件夹。 用例是打包,我有一个应用程序,由 pod 中的子应用程序组成。例如。

/app/modules/components
/app/modules/app1
/app/modules/app2
/app/modules/app3

我想在环境设置为“开发”或仅例如时构建它们。当环境为“app1”时为“app1”。有什么建议吗?

我尝试了 broccoli-file-remover、broccoli-funnel 和 broccoli-merge-trees 的不同组合,但均无济于事。

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有关当前可用 Hook 的更多详细信息。

应该可以解决问题的钩子(Hook)是 Addon.prototype.postprocessTree。现在我们有两个选择,我们可以通过 ember addon 构建一个独立的插件,或者我们可以通过 ember g in-repo-addon 创建一个轻量级的 in-repo 插件.通常对于这些类型的情况,我更喜欢 in-repo-addons,因为它们不需要第二个项目,但除此之外它们是相同的。

  1. ember g in-repo-addon 删除
  2. 我们需要通过npm install --save broccoli-stew安装broccoli-stew
  3. 包含它 var stew = require('broccoli-stew');
  4. 将 hook postprocessTree 添加到附加组件
  5. 当 postprocessTree 是我们关心的类型时,使用 broccoli-stew 删除我们不再关心的目录。

生成的拉取请求:https://github.com/WooDzu/ember-exclude-pod/pull/1

Note: I noticed template wasn't one of the types available in postprocess, so I added it: https://github.com/ember-cli/ember-cli/pull/4263 (should be part of the next ember-cli release)

Note: we really do want an additional hook Addon.prototype.preprocessTree, as to ignore the files before we even build them. I have opened a related issue: 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;
    }
  }

};

关于javascript - 从 Brocfile 中的构建中排除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30686368/

相关文章:

javascript - 在 JavaScript 中的元素之前插入节点

javascript - 如何让 WebDriver 等到 Sencha AJAX 调用完成?

javascript - 使用 jquery 将数据值从父元素附加到子元素

javascript - 使 iris 的颜色选择器在未聚焦时消失

seo - Emberjs 显示实际路由 href =""以增加站点可浏览性

javascript - Mirage 的简单 Ember 数据问题(错误 : Encountered a resource object with an undefined type )

ember.js - Ember 诉 2.x : watch vendor folder

javascript - 如何在 Ember 2 中重用路由?

javascript - Ember.js 中的 CSS 边框和奇怪的元素边界

ember.js - 如何扩展 ember-cli 构建?