我用的是ember-cli和西兰花。
生成一个树,其中包含我的应用程序中的所有文件。该树被传递给broccoli-manifest以生成HTML5应用程序缓存清单文件。然而,我想排除一些文件被写入清单(他们不应该是脱机可用-一个FALLBACK在清单中指定)。
我的第一个想法是提交一个pull请求到broccoli-manifest,允许你传递一个包含要忽略的文件列表的选项(例如,不输出到manifest)。
然后我想到一种更西兰花的方法,也许是在将树传递给broccoli-manifest之前以某种方式过滤树。
。比如:
var completeTree = app.toTree();
var filteredTree = imaginaryFilteringFunction(completeTree, {
exclude: ['assets/is-online.json']
});
module.exports = mergeTrees([completeTree, writeManifest(filteredTree, {
fallback: ['assets/is-online.json assets/offline.json']
})]);
像我的imaginaryFilteringFunction
这样的东西存在于西兰花地吗?应该吗?还是我该换个方式来处理这件事?
我在ember.js论坛上问了同样的问题,rwjblue很友好地给了我答案,那就是使用broccoli-file-remover。
。
var removeFile = require('broccoli-file-remover');
var filteredTree = removeFile(completeTree, {
paths: ['assets/is-online.json']
});
对于这个问题,公认的答案是指broccoli-file-remover
,它现在已被弃用,而支持西兰花-漏斗。
新的解决方案是这样的:
const funnel = require('broccoli-funnel');
const completeTree = app.toTree();
const filteredTree = funnel(completeTree, {
exclude: ['assets/is-online.json']
});
现在使用broccoli-funnel
的好处是,它支持globs,所以你可以删除所有的is-online.json
文件从任何地方在你的树使用这样的东西:
const funnel = require('broccoli-funnel');
const completeTree = app.toTree();
const filteredTree = funnel(completeTree, {
exclude: ['**/is-online.json']
});