xiaofu-ruoyi-vue/node_modules/script-ext-html-webpack-plugin/lib/custom-attributes.js

47 lines
1.1 KiB
JavaScript

'use strict';
const CONSTANTS = require('./constants.js');
const common = require('./common.js');
const debug = common.debug;
const getScriptName = common.getScriptName;
const isResourceLink = common.isResourceLink;
const isScript = common.isScript;
const matches = common.matches;
const shouldAdd = options => {
return options.custom.length > 0;
};
const add = (options, tags) => {
const update = updateElement.bind(null, options);
return tags.map(update);
};
const updateElement = (options, tag) => {
return (isScript(tag) || isResourceLink(tag))
? updateScriptElement(options, tag)
: tag;
};
const updateScriptElement = (options, tag) => {
const scriptName = getScriptName(options, tag);
let updated = false;
options.custom.forEach(customOption => {
if (matches(scriptName, customOption.test)) {
tag.attributes = tag.attributes || {};
tag.attributes[customOption.attribute] = customOption.value;
updated = true;
}
});
if (updated) {
debug(`${CONSTANTS.PLUGIN}: updated to: ${JSON.stringify(tag)}`);
}
return tag;
};
module.exports = {
shouldAdd,
add
};