UNPKG

weapp-tailwindcss

Version:

把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!

63 lines (62 loc) 2.85 kB
import { n as weappTailwindcssPackageDir, r as __dirname, t as WeappTailwindcss } from "./webpack-Rx3u2_2x.js"; import path from "node:path"; //#region src/bundlers/rspack/index.ts const CSS_IMPORT_REWRITE_LOADER_NAME = "weapp-tw-css-import-rewrite-loader"; const LIGHTNING_CSS_LOADER_NAME = "builtin:lightningcss-loader"; const CSS_LOADER_NAME = "css-loader"; const POSTCSS_LOADER_NAME = "postcss-loader"; function isRuleLike(value) { return typeof value === "object" && value !== null; } function normalizeUse(use) { if (Array.isArray(use)) return use; if (use === void 0) return; return [use]; } function getLoaderName(item) { if (typeof item === "string") return item; return item?.loader; } function includesLoaderName(item, name) { return getLoaderName(item)?.includes(name) === true; } function createCssImportRewriteLoaderEntry(options) { return { loader: options.loader ?? path.resolve(__dirname, `./${CSS_IMPORT_REWRITE_LOADER_NAME}.cjs`), ...options.options === void 0 ? {} : { options: options.options } }; } function resolveCssImportRewriteOptions(options) { const cssImportRewriteLoader = options.cssImportRewriteLoader ?? true; if (cssImportRewriteLoader === false) return; return cssImportRewriteLoader === true ? {} : cssImportRewriteLoader; } function patchRuleUse(rule, options) { let use = normalizeUse(rule.use); if (!use) return; if (options.removeLightningCssLoader) use = use.filter((item) => !includesLoaderName(item, LIGHTNING_CSS_LOADER_NAME)); const cssImportRewriteOptions = resolveCssImportRewriteOptions(options); if (cssImportRewriteOptions) { const existingIndex = use.findIndex((item) => includesLoaderName(item, CSS_IMPORT_REWRITE_LOADER_NAME)); const existing = existingIndex === -1 ? void 0 : use.splice(existingIndex, 1)[0]; const anchorIndex = use.findIndex((item) => includesLoaderName(item, LIGHTNING_CSS_LOADER_NAME)); const fallbackAnchorIndex = anchorIndex === -1 ? use.findIndex((item) => includesLoaderName(item, CSS_LOADER_NAME) || includesLoaderName(item, POSTCSS_LOADER_NAME)) : anchorIndex; if (fallbackAnchorIndex !== -1) { const loaderEntry = existing ?? createCssImportRewriteLoaderEntry(cssImportRewriteOptions); use.splice(fallbackAnchorIndex + 1, 0, loaderEntry); } } rule.use = use; } function walkRspackRule(rule, options) { if (!isRuleLike(rule)) return; patchRuleUse(rule, options); if (Array.isArray(rule.oneOf)) rule.oneOf.forEach((item) => walkRspackRule(item, options)); if (Array.isArray(rule.rules)) rule.rules.forEach((item) => walkRspackRule(item, options)); } function patchRspackConfig(config, options = {}) { for (const rule of config.module?.rules ?? []) walkRspackRule(rule, options); return config; } //#endregion export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss, patchRspackConfig, weappTailwindcssPackageDir };