in packages/docpack/lib/docpack.js [91:180]
Docpack.prototype.apply = function(compiler) {
if (compiler.parentCompilation) {
return false;
}
var docpack = this;
var promises;
var applyPluginsWaterfall;
if (docpack.plugins.length > 0) {
compiler.apply.apply(compiler, docpack.plugins);
}
compiler.plugin('after-plugins', function () {
this.applyPlugins(HOOKS.INIT, compiler);
});
compiler.plugin('this-compilation', function (compilation) {
applyPluginsWaterfall = Promise.promisify(compilation.applyPluginsAsyncWaterfall, {context: compilation});
compilation.plugin('optimize-tree', function (chunks, modules, done) {
var filesToProcess = utils.getAffectedFiles(compilation).filter(function(filepath) {
return utils.matcher(docpack.config, filepath);
});
promises = Promise.map(filesToProcess, function (filepath) {
return utils.readFile(compiler.inputFileSystem, filepath)
.then(function (content) {
return new Source({
absolutePath: filepath,
path: path.relative(compiler.options.context, filepath),
content: content.toString()
});
})
})
.then(function(sources) {
return applyHook(applyPluginsWaterfall, HOOKS.BEFORE_EXTRACT, sources);
})
.then(function(sources) {
return applyHook(applyPluginsWaterfall, HOOKS.EXTRACT, sources);
})
.then(function(sources) {
return applyHook(applyPluginsWaterfall, HOOKS.AFTER_EXTRACT, sources);
})
.each(function(source) {
docpack.save(source);
return source;
})
.then(function(sources) {
done();
return sources;
})
.catch(done);
});
});
compiler.plugin('emit', function (compilation, done) {
promises
.then(function (sources) {
return applyHook(applyPluginsWaterfall, HOOKS.BEFORE_GENERATE, sources);
})
.then(function (sources) {
return applyHook(applyPluginsWaterfall, HOOKS.GENERATE, sources);
})
.then(function (sources) {
return applyHook(applyPluginsWaterfall, HOOKS.AFTER_GENERATE, sources);
})
.then(function (sources) {
return applyHook(applyPluginsWaterfall, HOOKS.EMIT, sources);
})
.catch(done)
.finally(function () {
done();
return null;
});
});
return true;
};