css-loader-incremental-ident
Version:
Incremental classnames generator for webpack`s css-loader
39 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLocalIdentGetter = void 0;
const path = require("path");
const idgen_1 = require("./idgen");
const DEFAULT_ALPHABET = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
function createLocalIdentGetter(opt = {}) {
const { bypass = false, prefix = '', suffix = '', localIdentSeparator = '_', alphabet = DEFAULT_ALPHABET, } = opt;
if (bypass)
return undefined;
const resourceIdGen = idgen_1.idgen(alphabet);
const resources = new Map();
function getShortIdent(resourcePath, localName) {
let resource = resources.get(resourcePath);
if (!resource) {
resource = {
id: resourceIdGen(),
localIdGen: idgen_1.idgen(alphabet),
locals: new Map(),
};
resources.set(resourcePath, resource);
}
let local = resource.locals.get(localName);
if (!local) {
local = resource.localIdGen();
resource.locals.set(localName, local);
}
return `${prefix}${resource.id}${localIdentSeparator}${local}${suffix}`;
}
return (context, localIdentName, localName, _options) => {
const relPath = path
.relative(context.rootContext, context.resourcePath)
// windows paths fix
.replace(/\\/g, '/');
return getShortIdent(relPath, localName);
};
}
exports.createLocalIdentGetter = createLocalIdentGetter;
//# sourceMappingURL=index.js.map