in packages/docpack-examples-compiler/lib/plugin.js [26:85]
apply: function(compiler) {
var config = this.config;
compiler.plugin('compilation', function(compilation) {
compilation.plugin(docpack.HOOKS.AFTER_EXTRACT, function(sources, done) {
var compiler = new ExamplesCompiler(compilation, {
filename: config.filename,
outputFilename: config.outputFilename
});
var hasFilter = typeof config.filter == 'function';
var targets = config.match === null
? sources
: sources.filter(function(source) {
return tools.matcher(config.match, source.absolutePath);
});
var filesByPaths = getExampleFilesByPath(targets);
for (var sourcePath in filesByPaths) {
filesByPaths[sourcePath].forEach(function(file) {
if (hasFilter && !config.filter(file)) {
return;
}
file.chunkName = compiler.getOutputFilename(file, sourcePath);
compiler.addFile(file, sourcePath);
});
}
compiler.run()
.then(function(compilation) {
var files = compiler.files;
var assetsByChunk = tools.getAssetsByChunkName(compilation);
files.forEach(function(file) {
if (file.chunkName in assetsByChunk == false) {
return;
}
assetsByChunk[file.chunkName].forEach(function (assetPath) {
var asset = new Asset({
type: path.extname(assetPath).substr(1),
content: compilation.assets[assetPath].source(),
path: assetPath
});
file.assets.push(asset);
});
delete file.chunkName;
});
done(null, sources);
})
.catch(done);
});
})
}