UNPKG

@lcap/builder

Version:
34 lines (33 loc) 1.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createGenScopedName = createGenScopedName; const path_1 = __importDefault(require("path")); const loader_utils_1 = require("loader-utils"); function createGenScopedName(prefix, rp = './') { return (name, filename) => { const rootPath = path_1.default.resolve(__dirname, rp); const request = path_1.default.relative(rootPath, filename.replace(/\.vue[\\/].*$/, '')); const tmpPath = filename .substring(0, filename.indexOf('?')) .replace(/\.vue[\\/]/g, '_') .replace(/\.(vue|css)$/g, '') .replace(/_(module|index)$/, ''); let vueName = path_1.default.basename(tmpPath); if (vueName === 'index') { vueName = path_1.default.basename(path_1.default.resolve(tmpPath, '../')); } const content = [prefix, request].join('+'); const hash = (0, loader_utils_1.getHashDigest)(content, 'md5', 'base64', 8); let scopedName = vueName; if (name !== 'root') { scopedName = `${scopedName}_${name}`; } // eslint-disable-next-line prefer-regex-literals const regex = new RegExp('[^a-zA-Z0-9\\-_\u00A0-\uFFFF]', 'g'); scopedName = `${scopedName}___${hash}`.replace(regex, '-').replace(/^((-?[0-9])|--)/, '_$1'); return scopedName; }; }