2

我正在使用 ember-cli 和 broccoli。

生成一棵树,其中包含我的应用程序中的所有文件。此树被传递给broccoli-manifest以生成 HTML5 应用程序缓存清单文件。但是,我想排除一些文件被写入清单(它们不应该脱机可用 - 而是在清单中指定了 FALLBACK)。

我的第一个想法是向 broccoli-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西兰花地里有像我这样的东西吗?应该是?还是我应该以不同的方式解决这个问题?

4

2 回答 2

2

我在ember.js 论坛上问了同样的问题,rwjblue 很友好地为我提供了使用 broccoli -file-remover的答案。

例如

var removeFile = require('broccoli-file-remover');

var filteredTree = removeFile(completeTree, {
  paths: ['assets/is-online.json']
});
于 2014-08-18T14:13:49.010 回答
0

对此的公认答案是指broccoli-file-remover现在不推荐使用broccoli-funnel

新的解决方案是这样的:

const funnel = require('broccoli-funnel');

const completeTree = app.toTree();
const filteredTree = funnel(completeTree, {
  exclude: ['assets/is-online.json']
});

现在使用的好处broccoli-funnel是它支持 glob,因此您可以is-online.json使用以下内容从树中的任何位置删除所有文件:

const funnel = require('broccoli-funnel');

const completeTree = app.toTree();
const filteredTree = funnel(completeTree, {
  exclude: ['**/is-online.json']
});
于 2020-02-24T18:06:31.000 回答