script-ext-html-webpack-plugin
Version:
Enhances html-webpack-plugin functionality with async and defer attributes for script elements
33 lines (27 loc) • 1.03 kB
JavaScript
;
const CHUNK_OPTIONS = ['all', 'initial'];
const createResourceHint = require('./resource-hints.js').createResourceHint;
const common = require('./common.js');
const matches = common.matches;
const getScriptName = common.getScriptName;
const getRawScriptName = common.getRawScriptName;
const hasScriptName = common.hasScriptName;
const optionsMatch = (option, scriptName) => {
return matches(option.chunks, CHUNK_OPTIONS) && matches(scriptName, option.test);
};
const addInitialChunkResourceHints = (options, tags) => {
return tags
.filter(hasScriptName)
.reduce((hints, tag) => {
const scriptName = getScriptName(options, tag);
if (optionsMatch(options.preload, scriptName)) {
hints.push(createResourceHint('preload', getRawScriptName(tag)));
} else if (optionsMatch(options.prefetch, scriptName)) {
hints.push(createResourceHint('prefetch', getRawScriptName(tag)));
}
return hints;
},
[]
);
};
module.exports = addInitialChunkResourceHints;