UNPKG

@packmule/less-pack

Version:

Packmule pack to transpile less files.

100 lines 2.85 kB
import ExtractPlugin from 'mini-css-extract-plugin'; import LintPlugin from 'stylelint-webpack-plugin'; export default 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: { esModule: true, modules: this.options.modules, sourceMap: hints.map, }, }, { loader: 'postcss-loader', options: { sourceMap: hints.map, }, }, { loader: 'resolve-url-loader', options: { sourceMap: hints.map, }, }, { loader: 'less-loader', options: { sourceMap: true, }, }, ]; if (hints.lint) { const lint = new LintPlugin({ context: options.root, lintDirtyModulesOnly: true, files: ['**/*.{css,less}'], fix: hints.fix, quiet: !options.debug, }); this.configuration.plugins.push(lint); } if (hints.extract) { const extraction = new ExtractPlugin({ 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 = [ { loader: ExtractPlugin.loader, options: { esModule: true, }, }, ...loaders, ]; } else { loaders = [ { loader: 'style-loader', options: { esModule: true, }, }, ...loaders, ]; } const rule = { test: /\.(css|less)$/, use: loaders, }; this.configuration.module.rules.push(rule); return this.configuration; } } //# sourceMappingURL=pack.js.map