UNPKG

@kkt/less-modules

Version:

Support for regular less files and *.module.less files.

83 lines (82 loc) β€’ 3.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const getCSSModuleLocalIdent_1 = __importDefault(require("react-dev-utils/getCSSModuleLocalIdent")); const kkt_1 = require("kkt"); const lessRegex = /\.(less)$/; const lessModuleRegex = /\.module\.(less)$/; const createLessModule = (lessLoaderOptions = {}) => { return function (conf, evn, options = {}) { if (!conf) { throw Error('KKT:@kkt/less-modules: there is no config found'); } options.isEnvProduction = evn === 'production'; options.isEnvDevelopment = evn === 'development'; const loaders = []; loaders.push({ test: lessRegex, exclude: lessModuleRegex, use: (0, kkt_1.getStyleLoaders)({ importLoaders: 3, sourceMap: options.isEnvProduction ? options.shouldUseSourceMap : options.isEnvDevelopment, modules: { mode: 'icss', }, }, { ...options, isEnvProduction: options.isEnvProduction, isEnvDevelopment: options.isEnvDevelopment, shouldUseSourceMap: options.shouldUseSourceMap, miniCssExtractPluginLoader: kkt_1.MiniCssExtractPlugin.loader, preProcessorOptions: { implementation: require.resolve('less'), ...lessLoaderOptions, }, }, require.resolve('less-loader')), // Don't consider CSS imports dead code even if the // containing package claims to have no side effects. // Remove this when webpack adds a warning or an error for this. // See https://github.com/webpack/webpack/issues/6571 sideEffects: true, }); loaders.push({ test: lessModuleRegex, use: (0, kkt_1.getStyleLoaders)({ importLoaders: 3, sourceMap: options.isEnvProduction ? options.shouldUseSourceMap : options.isEnvDevelopment, modules: { mode: 'local', // @ts-ignore //πŸ’₯πŸ”₯πŸš¨πŸšΈπŸš«β›”οΈπŸ”„ Upgrade `@types/react-dev-utils` getLocalIdent: getCSSModuleLocalIdent_1.default, }, }, { ...options, isEnvProduction: options.isEnvProduction, isEnvDevelopment: options.isEnvDevelopment, shouldUseSourceMap: options.shouldUseSourceMap, miniCssExtractPluginLoader: kkt_1.MiniCssExtractPlugin.loader, preProcessorOptions: { implementation: require.resolve('less'), ...lessLoaderOptions, }, }, require.resolve('less-loader')), }); // Exclude all less files (including module files) from file-loader conf.module.rules = conf.module?.rules?.map((rule) => { if (rule && typeof rule === 'object' && rule.oneOf) { loaders.forEach((item) => rule.oneOf?.splice(rule.oneOf.length - 1, 0, item)); } return rule; }); return conf; }; }; /** * Use create-react-app to build react libraries. Support for regular less files and *.module.less files. */ const lessmodule = createLessModule(); lessmodule.withLoaderOptions = createLessModule; exports.default = lessmodule;