Ember.js CLI 构建西兰花漏斗无法正常工作

Ember.js CLI Build Broccoli Funnel not working

我正在尝试使用 Broccoli Funnel 包将完整目录拉入 Ember CLI 构建中的资产文件夹。请在下面找到我的 ember-cli-build.js 文件:

var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var Funnel = require('broccoli-funnel');

module.exports = function(defaults) {
  var app = new EmberApp(defaults, {
    //
  });

  var extraAssets = new Funnel('vendor/images/frames/artist/64', {
    destDir: '/assets/images'
  });

  app.toTree(extraAssets);

  return app.toTree();
};

目录 "vendor/images/frames/artist/64" 仅包含 .png 图像文件,我希望在 "assets/images/64/" 构建后所有这些文件都可用。在构建过程之后,我的资产目录中没有创建图像文件夹。

你能帮忙指出我哪里出错了吗?是否有任何调试工具可以显示 Broccoli Funnel 试图添加到构建中的内容以及这些文件分发到的位置?

你应该使用 MergeTrees:

return new BroccoliMergeTrees([app.toTree(), extraAssets]);

而不是

app.toTree(extraAssets);

return app.toTree();

app.ToTree 接受转换节点数组(trees in broccoli 1.x.x)。

此外,您必须 return 由您的 app.toTree 调用转换的节点。

因此,

...

app.toTree(extraAssets);

return app.toTree();

你会的,

return app.toTree([extraAssets])

建议,鼓励使用 broccoli-merge-trees

var EmberApp   = require('ember-cli/lib/broccoli/ember-app'),
    Funnel     = require('broccoli-funnel'),
    MergeTrees = require('broccoli-merge-trees');

module.exports = function(defaults) {
  var app = new EmberApp(defaults, {
    //
  }),
  nodes = [];

  nodes.push(new Funnel('vendor/images/frames/artist/64', {
      destDir: '/assets/images'
  }));

  nodes.push(app.toTree());

  return new MergeTrees(nodes);
};    

调试西兰花Trees/Nodes

要调试您的 broccoli 插件输出,请使用 broccoli-stew。下面是一个快速示例,用于列出在漏斗步骤之后出现的文件。

var EmberApp   = require('ember-cli/lib/broccoli/ember-app'),
    Funnel     = require('broccoli-funnel'),
    MergeTrees = requre('broccoli-merge-trees'),
    log        = require('broccoli-stew').log;

module.exports = function(defaults) {
  var app = new EmberApp(defaults, {
    //
  }),
  loggedNode,
  nodes = [];

  funnelOutput = new Funnel('vendor/images/frames/artist/64', {
      destDir: '/assets/images'
  }));

  nodes.push(log(funnelOutput))

  nodes.push(app.toTree());

  return new MergeTrees(nodes);
};