UNPKG

@zero-scripts/plugin-webpack-css

Version:

Adds processing CSS files: extracting, minify and add vendor prefixes

77 lines 4.41 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebpackCssPlugin = void 0; 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 core_1 = require("@zero-scripts/core"); const utils_webpack_styles_1 = require("@zero-scripts/utils-webpack-styles"); const webpack_config_1 = require("@zero-scripts/webpack-config"); const WebpackCssPluginOptions_1 = require("./WebpackCssPluginOptions"); const safePostCssParser = require('postcss-safe-parser'); const cssModuleRegex = /\.(module|m)\.css$/; let WebpackCssPlugin = class WebpackCssPlugin extends core_1.AbstractPlugin { apply(applyContext) { applyContext.hooks.beforeRun.tap('WebpackCssPlugin', beforeRunContext => { const webpackConfigBuilder = beforeRunContext.getConfigBuilder(webpack_config_1.WebpackConfig); webpackConfigBuilder.hooks.build.tap('WebpackCssPlugin', (modifications, configOptions) => { var _a; const options = this.optionsContainer.build(); (_a = options.styleLoaders) === null || _a === void 0 ? void 0 : _a.forEach(rule => { modifications.insertModuleRule({ test: new RegExp(rule.test), exclude: rule.exclude ? new RegExp(rule.exclude) : undefined, use: utils_webpack_styles_1.getStyleLoaders(mini_css_extract_plugin_1.default.loader, undefined, rule.preprocessor ? require.resolve(rule.preprocessor) : undefined, require.resolve(rule.loader))(configOptions), sideEffects: true }); }); modifications.insertModuleRule({ test: /\.css$/, exclude: cssModuleRegex, sideEffects: true, use: utils_webpack_styles_1.getStyleLoaders(mini_css_extract_plugin_1.default.loader)(configOptions) }); modifications.insertModuleRule({ test: cssModuleRegex, use: utils_webpack_styles_1.getStyleLoaders(mini_css_extract_plugin_1.default.loader, { modules: { getLocalIdent: utils_webpack_styles_1.getLocalIdent } })(configOptions) }); if (!configOptions.isDev) { modifications.insertPlugin(new mini_css_extract_plugin_1.default({ filename: 'css/[name].[contenthash:8].css', chunkFilename: 'css/[name].[contenthash:8].chunk.css' }), undefined, 'mini-css-extract-plugin'); } modifications.insertMinimizer(new optimize_css_assets_webpack_plugin_1.default({ cssProcessorOptions: { parser: safePostCssParser, map: configOptions.useSourceMap ? { inline: false, annotation: true } : false } }), undefined, 'optimize-css-assets-plugin'); }); }); } }; WebpackCssPlugin = __decorate([ core_1.ReadOptions(WebpackCssPluginOptions_1.WebpackCssPluginOptions, 'plugin-webpack-css') ], WebpackCssPlugin); exports.WebpackCssPlugin = WebpackCssPlugin; //# sourceMappingURL=WebpackCssPlugin.js.map