我正在尝试使用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尝试添加到构建中的内容以及这些文件的分发位置?
答案 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);
};