| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 'use strict';
- const debug = require('debug')('ScriptExt');
- const separator = '/';
- const isScript = (tag) => tag.tagName === 'script';
- const hasScriptName = tag => tag.attributes && tag.attributes.src;
- const getRawScriptName = tag => (tag.attributes && tag.attributes.src) || '';
- const getPublicPath = options => {
- const output = options.compilationOptions.output;
- if (output) {
- let publicPath = output.publicPath;
- if (publicPath) {
- return publicPath.endsWith(separator) ? publicPath : publicPath + separator;
- }
- }
- };
- const getScriptName = (options, tag) => {
- let scriptName = getRawScriptName(tag);
- const publicPath = getPublicPath(options);
- if (publicPath) {
- scriptName = scriptName.replace(publicPath, '');
- }
- if (options.htmlWebpackOptions.hash) {
- scriptName = scriptName.split('?', 1)[0];
- }
- return scriptName;
- };
- const matches = (toMatch, matchers) => {
- return matchers.some((matcher) => {
- if (matcher instanceof RegExp) {
- return matcher.test(toMatch);
- } else {
- return toMatch.includes(matcher);
- }
- });
- };
- module.exports = {
- debug,
- getPublicPath,
- getRawScriptName,
- getScriptName,
- hasScriptName,
- isScript,
- matches
- };
|