UNPKG

just-scripts

Version:
110 lines 4.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stylesOverlay = exports.createStylesOverlay = void 0; const just_task_1 = require("just-task"); const tryRequire_1 = require("../../tryRequire"); const cssTest = /\.css$/; const cssModuleTest = /\.module\.css$/; const sassTest = /\.(scss|sass)$/; const sassModuleTest = /\.module\.(scss|sass)$/; const defaultIdentName = '[name]_[local]_[hash:base64:5]'; function createStyleLoaderRule(cssOptions, preprocessor = null) { const styleLoader = just_task_1.resolve('@microsoft/loader-load-themed-styles') || just_task_1.resolve('style-loader'); const postCssLoader = just_task_1.resolve('postcss-loader'); const preloaders = [ ...(postCssLoader ? [ { loader: 'postcss-loader', options: { plugins: function () { return [tryRequire_1.tryRequire('autoprefixer')]; }, }, }, ] : []), ...(preprocessor ? [preprocessor] : []), ]; const moduleOptions = cssOptions.localIdentName ? { modules: { mode: 'local', localIdentName: cssOptions.localIdentName, }, } : { modules: cssOptions.modules, }; return [ { loader: styleLoader, // creates style nodes from JS strings }, { loader: 'css-loader', options: { ...moduleOptions, importLoaders: preloaders.length, }, }, ...preloaders, ]; } const createStylesOverlay = function (options = {}) { const sassLoader = just_task_1.resolve('node-sass') && just_task_1.resolve('sass-loader'); const cssLoader = just_task_1.resolve('css-loader'); return { module: { rules: [ ...(cssLoader ? [ { test: cssTest, exclude: [/node_modules/, cssModuleTest], use: createStyleLoaderRule({ modules: false, localIdentName: options.localIdentName || defaultIdentName, }), sideEffects: true, }, { test: cssModuleTest, exclude: [/node_modules/], use: createStyleLoaderRule({ modules: true, localIdentName: options.localIdentName || defaultIdentName, }), }, ] : []), ...(sassLoader && cssLoader ? [ { test: sassTest, exclude: [/node_modules/, sassModuleTest], use: createStyleLoaderRule({ modules: false, localIdentName: options.localIdentName || defaultIdentName, }, 'sass-loader'), sideEffects: true, }, { test: sassModuleTest, exclude: [/node_modules/], use: createStyleLoaderRule({ modules: true, localIdentName: options.localIdentName || defaultIdentName, }, 'sass-loader'), }, ] : []), ], }, }; }; exports.createStylesOverlay = createStylesOverlay; const stylesOverlay = () => exports.createStylesOverlay({ localIdentName: defaultIdentName, }); exports.stylesOverlay = stylesOverlay; //# sourceMappingURL=stylesOverlay.js.map