PageGeneratorPlugin.prototype.apply = function()

in packages/docpack-page-generator/lib/plugin.js [89:131]


PageGeneratorPlugin.prototype.apply = function(compiler) {
  var plugin = this;
  var template = this.config.template;
  var compilerName = PageGeneratorPlugin.getCompilerNameFor(template);
  var assetFilename = CONST.TEMPLATE_ASSET_NAME;

  compiler.plugin(Docpack.HOOKS.INIT, this.configure.bind(this));

  compiler.plugin('compilation', function(compilation) {
    compilation.plugin(Docpack.HOOKS.BEFORE_EXTRACT, function(sources, done) {
      if (plugin.renderer) {
        done(null, sources);
        return;
      }

      tools.TemplateCompiler(compilation, {
        template: template,
        name: compilerName,
        output: {
          filename: assetFilename
        }
      })
        .run()
        .then(function (fn) {
          plugin.renderer = fn;
          done(null, sources);
        });
    });

    compilation.plugin(Docpack.HOOKS.BEFORE_GENERATE, function (sources, done) {
      plugin.generate(compilation, sources);
      done(null, sources);
    });

    compilation.plugin(Docpack.HOOKS.GENERATE, function (sources, done) {
      // TODO: refactor this ugly caching
      plugin._assetsByChunkName = tools.getAssetsByChunkName(compilation);

      plugin.generatePagesContent(compilation, sources);
      done(null, sources);
    });
  });
};