从 Brocfile 的构建中排除文件夹

2023-11-27

有没有办法从 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 确实允许插件在各个生命周期里程碑修改适当的树。

See: 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,因为它们不需要第二个项目,但在其他方面它们是相同的。

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

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

注:我注意到template不是后期处理中可用的类型之一,所以我添加了它:https://github.com/ember-cli/ember-cli/pull/4263(应该是下一个 ember-cli 版本的一部分)

注意:我们确实想要一个额外的钩子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;
    }
  }

};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Brocfile 的构建中排除文件夹 的相关文章

随机推荐

  • Firebase 云消息传递 click_action 格式是否特定于平台?

    我正在使用 Firebase Cloud Messaging 向我的应用程序的客户端发送通知 客户端可以是三个受支持平台 ios android web 中的任何一个 我希望用户能够单击通知来启动应用程序 为此 我必须在通知中指定 clic
  • scylla读取路径和cassandra读取路径有什么区别?

    Scylla 读取路径和 Cassandra 读取路径有什么区别 当我强调 Cassandra 和 Scylla 时 Scylla 的读取性能比使用 16 核和普通 HDD 的 Cassandra 差 5 倍 与使用普通 HDD 的 Cas
  • 如何设置会话的生命周期

    如何在 PHP 中设置会话生命周期 只要请求存在 我想将其设置为永远 请求是AJAX 我处理 AJAX 请求的 PHP 代码是 AJAX php 和 JavaScript document ready function function c
  • 如何知道哪个函数调用了另一个函数

    我想知道是否有任何方法可以知道当前正在执行的函数被调用的位置 即在哪个文件和行中 我正在使用 C 语言 并且正在寻找类似于 FUNCTION LINE 或 FILE 宏的东西 重命名你的函数 void Function param1 to
  • 静态库和动态库:混淆

    我在这方面需要做一些澄清 我觉得条款Static library Dynamic Library不正确 lib1 o lib2 o lib3 o gt LinkerOutputFile 可执行文件或库 如果这个 LinkerOutputFi
  • 在 matplotlib 中分页/滚动一组 2D 热图

    我正在生成一组 3D 数据的 2D 热图 我希望能够有一种机制来交互式地翻阅每个窗格 下面是一个简单的示例代码 我希望能够通过滑块 或其他方式 以交互方式查看两个窗格 即 z 0 1 这对于 matplotlib 是可能的吗 或者这是我在生
  • Matplotlib - 如何为一系列绘图设置 ylim()?

    我正在尝试制作一系列箱线图 每个箱线图都有不同的范围 我尝试通过确定每个单独系列的最大值和最小值来设置 ylim 然而 在许多情况下 最小值是异常值 因此绘图被压缩 如何选择绘图的 胡须 使用的相同限制 加上一个小边距 例如 现在我正在这样
  • 更改本机、phonegap/Cordova 构建的 iOS 应用程序中的键盘外观

    我想更改我的 Phonegap Cordova 构建的本机 iOS 应用程序中出现的所有键盘的背景颜色 如下所示 当然 我已经彻底搜索了这个问题 主要找到了两个相关答案 回答者here说 Objective C 代码可以添加到 PhoneG
  • 通过嵌套函数或多个参数列表进行 scala 柯里化

    在 Scala 中 我可以定义一个带有两个参数列表的函数 def myAdd x Int y Int x y 这使得定义部分应用函数变得容易 val plusFive myAdd 5 但是 我可以通过定义和返回嵌套函数来完成类似的事情 de
  • 如何将元素附加到 numpy 数组

    我想做相当于在 Numpy 中递归地在 python 列表中添加元素的操作 如以下代码所示 matrix open workfile w A for row in matrix A append row print A 我已经尝试过以下方法
  • 如何使用 C 函数执行 Shell 内置命令?

    我想通过像 execv 这样的 C 语言函数来执行 Linux 命令 pwd 问题是没有名为 pwd 的可执行文件 并且我无法执行 echo PWD 因为 echo 也是一个内置命令 找不到可执行文件 如果你只想在你的c程序中执行shell
  • 如何将自定义属性添加到 Magento 中的客户组?

    我们使用的是 Magento CE 1 7 0 0 我们正在尝试向客户组实体添加新属性 我们已使用以下安装脚本成功向客户添加自定义属性
  • Javascript/Regex 用于仅查找没有子域的根域名

    我进行了搜索 发现了很多类似的正则表达式示例 但不完全是我需要的 我希望能够传入以下网址并返回结果 www google com回报谷歌网站 子域名 are cool google com回报谷歌网站 并不重要子域名的长度如何 idont
  • BASH下运行的程序的颜色输出[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要能够使终端上的一些文本更加引人注目 我的想法是使文本着色 要么是实际的文本 要么是每个字母的矩形中的空间 想想 vi 的光标 我认为对我的应用程序重要的唯一两个额外规范是
  • 在我的 css 类中使用 Zoom:1 可以吗?

    每当我发现 IE 显示我的网站很奇怪 与 Chrome 和 Firefox 不同 时 我会尝试放置zoom 1在 css 类中显示奇怪的部分 很多时候这可以解决问题并使其看起来与其他浏览器一致 使用有问题吗zoom 1 我知道我的 CSS
  • CFMessagePort 和沙箱

    我正在调整 MacOS 应用程序以使用沙箱 它使用一个辅助应用程序 同一包中的 exe 当我尝试在控制台中使用 拒绝 mach lookup 消息调用 CFMessagePortCreateRemote 时 该应用程序会失败 我可以看到co
  • PHP mb_ereg_replace 未替换,而 preg_replace 按预期工作

    我正在尝试将字符串中所有非单词字符替换为空字符串 除了空格 并将所有多个空格放在一起作为一个空格 以下代码执行此操作 cleanedString preg replace w name cleanedString preg replace
  • 将 numpy 中数组元素的所有组合相乘

    注意 我对 只需使用 for 循环进行操作 之类的答案不感兴趣 我想以 numpyish 的方式进行操作 我是 Python 初学者 我想使用 numpy ndarray 执行以下操作 给定一个数字序列t和另一个数字序列b 对于每一个t i
  • Asyncio 检测断开连接挂起

    我在 Python 3 4 中使用 Asyncio 我将尝试解释到目前为止我正在做的事情以及我 认为 导致问题的原因 一方面 我有一个具有阻塞操作的 UDP 连接框架 我将从该流中获取的数据创建为 SSE 格式传递给客户端的 json 这一
  • 从 Brocfile 的构建中排除文件夹

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