UNPKG

@packmule/less-pack

Version:

Packmule pack to transpile less files.

100 lines 3.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const mini_css_extract_plugin_1 = __importDefault(require("mini-css-extract-plugin")); const optimize_css_assets_webpack_plugin_1 = __importDefault(require("optimize-css-assets-webpack-plugin")); const stylelint_webpack_plugin_1 = __importDefault(require("stylelint-webpack-plugin")); class LessPack { constructor() { this.defaults = { modules: false, }; this.configuration = { resolve: { extensions: ['.css', '.less'], }, module: { rules: [], }, optimization: { minimizer: [], }, plugins: [], }; this.options = this.defaults; } modules() { this.options.modules = true; return this; } generate(options, hints) { let loaders = [ { loader: 'css-loader', options: { modules: this.options.modules, sourceMap: options.debug, }, }, { loader: 'postcss-loader', options: { sourceMap: options.debug, }, }, { loader: 'resolve-url-loader', options: { engine: 'postcss', sourceMap: options.debug, }, }, { loader: 'less-loader', options: { sourceMap: true, relativeUrls: false, }, }, ]; if (hints.lint) { const lint = new stylelint_webpack_plugin_1.default({ context: options.root, lintDirtyModulesOnly: true, files: '**/*.{less}', quiet: !options.debug, }); this.configuration.plugins.push(lint); } if (hints.extract) { const extraction = new mini_css_extract_plugin_1.default({ filename: hints.hash ? '[name].[contenthash:8].css' : '[name].css', chunkFilename: hints.hash ? 'chunks/[name].[contenthash:8].css' : 'chunks/[name].css', }); this.configuration.plugins.push(extraction); loaders = [mini_css_extract_plugin_1.default.loader, ...loaders]; } else { loaders = [ { loader: 'style-loader', }, ...loaders, ]; } if (hints.optimize) { const optimization = new optimize_css_assets_webpack_plugin_1.default(); this.configuration.optimization.minimizer.push(optimization); } const rule = { test: /\.(css|less)$/, use: loaders, }; this.configuration.module.rules.push(rule); return this.configuration; } } exports.default = LessPack; //# sourceMappingURL=pack.js.map