weapp-tailwindcss
Version:
把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!
69 lines (68 loc) • 3.16 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
const require_webpack = require("./webpack-B2ojv_HI.cjs");
let node_path = require("node:path");
node_path = require_rolldown_runtime.__toESM(node_path, 1);
//#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 ?? node_path.default.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
exports.WeappTailwindcss = require_webpack.WeappTailwindcss;
exports.patchRspackConfig = patchRspackConfig;
exports.weappTailwindcss = require_webpack.WeappTailwindcss;
exports.weappTailwindcssPackageDir = require_webpack.weappTailwindcssPackageDir;