Ember.js CLI构建Broccoli漏斗无法正常工作

时间:2016-06-16 19:01:34

标签: javascript ember.js ember-cli broccolijs

我正在尝试使用Broccoli Funnel软件包将完整目录拉入Ember CLI构建中的assets文件夹。请在下面找到我的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尝试添加到构建中的内容以及这些文件的分发位置?

2 个答案:

答案 0 :(得分:1)

您应该使用MergeTrees

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

而不是

app.toTree(extraAssets);

return app.toTree();

答案 1 :(得分:1)

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。这是一个快速示例,列出了Funnel步骤之后的文件。

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);
};