Я разрабатываю виджет, который можно встроить на «любой» веб-сайт и использовать css-загрузчик, чтобы присвоить моему CSS-классу уникальные имена, чтобы избежать конфликтов.
В моем webpack.config.js у меня есть следующая строка:
localIdentName: 'productname-[folder]-[local]',
Это выводит имена классов, такие как:
- productname-src-widgetbox
- productname-Sidebar-боковая панель
Можно ли удалить все «-src» из имен классов и сделать все строчными?
Я нашел решение, в котором я просто скопировал весь оригинальный getLocalIdent() и добавил методы replace() и toLowerCase(). Но это не очень хорошее решение, я думаю:
const getLocalIdent = (loaderContext, localIdentName, localName, options) => {
if (!options.context) {
options.context = loaderContext.rootContext;
}
const request = path
.relative(options.context, loaderContext.resourcePath)
.replace(/\\/g, '/');
options.content = `${options.hashPrefix + request}+${localName}`;
localIdentName = localIdentName.replace(/\[local\]/gi, localName);
const hash = loaderUtils.interpolateName(
loaderContext,
localIdentName,
options
);
return hash
.replace(new RegExp('[^a-zA-Z0-9\\-_\u00A0-\uFFFF]', 'g'), '-')
.replace(/^((-?[0-9])|--)/, '_$1')
.replace("-src", "").toLowerCase();
};