astro-tw-autoreference
Version:
Automaticaly inject tailwind `@reference` directives into Astro component style blocks.
30 lines (29 loc) • 985 B
JavaScript
import { generateReferences, normalizeOptions, shouldInjectReferences, } from './lib.js';
const DEFAULTS = {
include: ['src/components', 'src/layouts', 'src/pages'],
exclude: [],
references: [],
};
export default function astroTwAutoreference(options = {}) {
const normalizedOptions = normalizeOptions({ ...DEFAULTS, ...options });
const referenceLines = generateReferences(normalizedOptions.references);
return {
name: 'vite-plugin-astro-tw-autoreference',
enforce: 'pre',
transform(code, id) {
if (!shouldInjectReferences(id, code, normalizedOptions))
return;
let result = '';
for (const refline of referenceLines) {
if (!code.includes(refline)) {
result += `${refline}\n`;
}
}
result += code;
return {
code: result,
map: null,
};
},
};
}