function modifyHTMLPluginOptions()

in packages/build-plugin-lce/src/common/htmlInjection.js [83:121]


function modifyHTMLPluginOptions(config, pluginName, options, params) {
  if (config.plugins.get(pluginName)) {
    // spa HtmlWebpackPlugin
    config.plugin(pluginName).tap(([args]) => {
      const defaultValues = {};
      Object.keys(HTML_POSITIONS).forEach((positionKey) => {
        defaultValues[positionKey] = HTML_POSITIONS[positionKey].defaultValue;
      });

      /**
       * for getDemoConfig needs extra info to inject to html.
       * merge htmlAppendInjection to params for getDemoConfig.
       */
      const { htmlAppendInjection } = args || {};

      const _params = {
        ...params,
      };

      if (htmlAppendInjection) {
        Object.keys(htmlAppendInjection).forEach((position) => {
          // eslint-disable-next-line no-param-reassign
          _params[position] = (_params[position] || '').concat(htmlAppendInjection[position]);
        });
      }

      const pluginOptions = {
        ...args,
        templateParameters: {
          ...(args.templateParameters || {}),
          ...defaultValues, // default value of html positions
          ..._params,
        },
        ...options,
      };
      return [pluginOptions];
    });
  }
}