UNPKG

2.96 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.loadPostcssConfiguration = exports.findTailwindConfiguration = exports.generateSearchDirectories = void 0;
4const node_fs_1 = require("node:fs");
5const node_path_1 = require("node:path");
6const postcssConfigurationFiles = ['postcss.config.json', '.postcssrc.json'];
7const tailwindConfigFiles = [
8 'tailwind.config.js',
9 'tailwind.config.cjs',
10 'tailwind.config.mjs',
11 'tailwind.config.ts',
12];
13function generateSearchDirectories(roots) {
14 return roots.map(root => {
15 return {
16 root,
17 files: new Set((0, node_fs_1.readdirSync)(root, { withFileTypes: true })
18 .filter(entry => entry.isFile())
19 .map(entry => entry.name)),
20 };
21 });
22}
23exports.generateSearchDirectories = generateSearchDirectories;
24function findFile(searchDirectories, potentialFiles) {
25 for (const { root, files } of searchDirectories) {
26 for (const potential of potentialFiles) {
27 if (files.has(potential)) {
28 return (0, node_path_1.join)(root, potential);
29 }
30 }
31 }
32 return undefined;
33}
34function findTailwindConfiguration(searchDirectories) {
35 return findFile(searchDirectories, tailwindConfigFiles);
36}
37exports.findTailwindConfiguration = findTailwindConfiguration;
38function readPostcssConfiguration(configurationFile) {
39 const data = (0, node_fs_1.readFileSync)(configurationFile, 'utf-8');
40 const config = JSON.parse(data);
41 return config;
42}
43function loadPostcssConfiguration(searchDirectories) {
44 const configPath = findFile(searchDirectories, postcssConfigurationFiles);
45 if (!configPath) {
46 return undefined;
47 }
48 const raw = readPostcssConfiguration(configPath);
49 // If no plugins are defined, consider it equivalent to no configuration
50 if (!raw.plugins || typeof raw.plugins !== 'object') {
51 return undefined;
52 }
53 // Normalize plugin array form
54 if (Array.isArray(raw.plugins)) {
55 if (raw.plugins.length < 1) {
56 return undefined;
57 }
58 const config = { plugins: [] };
59 for (const element of raw.plugins) {
60 if (typeof element === 'string') {
61 config.plugins.push([element]);
62 }
63 else {
64 config.plugins.push(element);
65 }
66 }
67 return config;
68 }
69 // Normalize plugin object map form
70 const entries = Object.entries(raw.plugins);
71 if (entries.length < 1) {
72 return undefined;
73 }
74 const config = { plugins: [] };
75 for (const [name, options] of entries) {
76 if (!options || (typeof options !== 'object' && typeof options !== 'string')) {
77 continue;
78 }
79 config.plugins.push([name, options]);
80 }
81 return config;
82}
83exports.loadPostcssConfiguration = loadPostcssConfiguration;
84//# sourceMappingURL=postcss-configuration.js.map
\No newline at end of file