UNPKG

css-loader-incremental-ident

Version:

Incremental classnames generator for webpack`s css-loader

39 lines 1.56 kB
"use strict"; 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