我正在尝试使用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正在尝试将哪些内容添加到内部版本以及这些文件的分发位置?

最佳答案

app.ToTree接受一组转换后的节点(broccoli 1.x.x中的)。

同样,您必须返回由app.toTree调用转换的节点。

所以代替

...

app.toTree(extraAssets);

return app.toTree();

你会的
return app.toTree([extraAssets])

Lux所建议的那样,鼓励使用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);
};

调试西兰花树/节点

要调试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);
};

关于javascript - Ember.js CLI Build Broccoli Funnel无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37867403/

10-11 15:28