UNPKG

my-vite-plugin-dynamic-base

Version:

Resolve all resource files dynamic publicPath, like Webpack's __webpack_public_path__

55 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceImport = exports.replaceSrc = exports.replaceUrl = exports.replaceQuotes = exports.replace = void 0; // replace function replace(mark, placeholder, code) { const re = new RegExp(mark, 'g'); return code.replace(re, placeholder); } exports.replace = replace; // repalce quotes function replaceQuotes(mark, placeholder, code) { const singleMark = `'${mark}`; const singlePlaceholder = `${placeholder}+'/`; const doubleMark = `"${mark}`; const doublePlaceholder = `${placeholder}+"/`; const templateMark = `\`${mark}`; const templatePlaceholder = `\`\$\{${placeholder}\}/`; const srcMark = `src="${mark}`; const srcPlaceholder = `src="'+${placeholder}+'/`; return replace(doubleMark, doublePlaceholder, replace(srcMark, srcPlaceholder, replace(singleMark, singlePlaceholder, replace(templateMark, templatePlaceholder, code)))); } exports.replaceQuotes = replaceQuotes; // replace asset url function replaceUrl(mark, placeholder, code) { const urlMark = `url(${mark}`; // const urlPlaceholder = `url("+${placeholder}+"/` const codeSpinner = code.split(urlMark); const len = codeSpinner.length; if (len === 1) { return code; } let rusultCode = ''; let quote = Array.from(codeSpinner[0].matchAll(/'/g) || []).length % 2 === 1 ? "'" : '"'; for (let i = 0; i < len; i++) { const codeItem = codeSpinner[i]; if (i === len - 1) { rusultCode += codeItem; } else { rusultCode += codeItem + `url(${quote}+${placeholder}+${quote}/`; } } return rusultCode; } exports.replaceUrl = replaceUrl; // replace asset src function replaceSrc(placeholder, code) { return code.replace(/=([a-zA-Z]+).src/g, `=${placeholder}+$1.getAttribute('data-src')`); } exports.replaceSrc = replaceSrc; function replaceImport(placeholder, code) { return code.replace(/(System.import\()/g, `$1${placeholder}+`); } exports.replaceImport = replaceImport; //# sourceMappingURL=utils.js.map