j-vite-plugin-dynamic-base
Version:
Resolve all resource files dynamic publicPath, like Webpack's __webpack_public_path__
36 lines • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replaceInStringLiteral = exports.replaceImport = exports.replaceSrc = exports.replace = void 0;
function replace(mark, placeholder, code) {
const re = new RegExp(mark, 'g');
return code.replace(re, placeholder);
}
exports.replace = replace;
// 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;
function replaceInStringLiteral(literal, base, placeholder) {
const quoteMark = literal.raw.charAt(0);
const regex = new RegExp(base, 'g');
// Keep track of whether we need to add quotation marks at the beginning of the
// final output
let withStartQuote = true;
const transformedStr = literal.value.replace(regex, (match, index) => {
let prefix = `${quoteMark}+`;
if (index === 0) {
prefix = '';
withStartQuote = false;
}
return `${prefix}${placeholder}+${quoteMark}/`;
});
const prefix = withStartQuote ? quoteMark : '';
return `${prefix}${transformedStr}${quoteMark}`;
}
exports.replaceInStringLiteral = replaceInStringLiteral;
//# sourceMappingURL=utils.js.map