|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // @ts-check
- /* eslint-disable */
- /// <reference path="../typings.d.ts" />
- /* eslint-enable */
- 'use strict';
- /**
- * This file provides access to all public htmlWebpackPlugin hooks
- */
-
- /** @typedef {import("webpack/lib/Compilation.js")} WebpackCompilation */
- /** @typedef {import("../index.js")} HtmlWebpackPlugin */
-
- const AsyncSeriesWaterfallHook = require('tapable').AsyncSeriesWaterfallHook;
-
- // The following typedef holds the API definition for all available hooks
- // to allow easier access when using ts-check or typescript inside plugins
- /** @typedef {{
-
- beforeAssetTagGeneration:
- AsyncSeriesWaterfallHook<{
- assets: {
- publicPath: string,
- js: Array<string>,
- css: Array<string>,
- favicon?: string | undefined,
- manifest?: string | undefined
- },
- outputName: string,
- plugin: HtmlWebpackPlugin
- }>,
-
- alterAssetTags:
- AsyncSeriesWaterfallHook<{
- assetTags: {
- scripts: Array<HtmlTagObject>,
- styles: Array<HtmlTagObject>,
- meta: Array<HtmlTagObject>,
- },
- outputName: string,
- plugin: HtmlWebpackPlugin
- }>,
-
- alterAssetTagGroups:
- AsyncSeriesWaterfallHook<{
- headTags: Array<HtmlTagObject | HtmlTagObject>,
- bodyTags: Array<HtmlTagObject | HtmlTagObject>,
- outputName: string,
- plugin: HtmlWebpackPlugin
- }>,
-
- afterTemplateExecution:
- AsyncSeriesWaterfallHook<{
- html: string,
- headTags: Array<HtmlTagObject | HtmlTagObject>,
- bodyTags: Array<HtmlTagObject | HtmlTagObject>,
- outputName: string,
- plugin: HtmlWebpackPlugin,
- }>,
-
- beforeEmit:
- AsyncSeriesWaterfallHook<{
- html: string,
- outputName: string,
- plugin: HtmlWebpackPlugin,
- }>,
-
- afterEmit:
- AsyncSeriesWaterfallHook<{
- outputName: string,
- plugin: HtmlWebpackPlugin
- }>,
-
- }} HtmlWebpackPluginHooks
- */
-
- /**
- * @type {WeakMap<WebpackCompilation, HtmlWebpackPluginHooks>}}
- */
- const htmlWebpackPluginHooksMap = new WeakMap();
-
- /**
- * Returns all public hooks of the html webpack plugin for the given compilation
- *
- * @param {WebpackCompilation} compilation
- * @returns {HtmlWebpackPluginHooks}
- */
- function getHtmlWebpackPluginHooks (compilation) {
- let hooks = htmlWebpackPluginHooksMap.get(compilation);
- // Setup the hooks only once
- if (hooks === undefined) {
- hooks = createHtmlWebpackPluginHooks();
- htmlWebpackPluginHooksMap.set(compilation, hooks);
- }
- return hooks;
- }
-
- /**
- * Add hooks to the webpack compilation object to allow foreign plugins to
- * extend the HtmlWebpackPlugin
- *
- * @returns {HtmlWebpackPluginHooks}
- */
- function createHtmlWebpackPluginHooks () {
- return {
- beforeAssetTagGeneration: new AsyncSeriesWaterfallHook(['pluginArgs']),
- alterAssetTags: new AsyncSeriesWaterfallHook(['pluginArgs']),
- alterAssetTagGroups: new AsyncSeriesWaterfallHook(['pluginArgs']),
- afterTemplateExecution: new AsyncSeriesWaterfallHook(['pluginArgs']),
- beforeEmit: new AsyncSeriesWaterfallHook(['pluginArgs']),
- afterEmit: new AsyncSeriesWaterfallHook(['pluginArgs'])
- };
- }
-
- module.exports = {
- getHtmlWebpackPluginHooks
- };
|