从西兰花树上移除一些文件



我用的是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']
});

相关内容

  • 没有找到相关文章