UNPKG

ng-packagr

Version:

Compile and package Angular libraries in Angular Package Format (APF)

1 lines 5.63 kB
{"version":3,"file":"postcss-configuration.js","sourceRoot":"","sources":["../../../src/lib/styles/postcss-configuration.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface PostcssConfiguration {\n plugins: [name: string, options?: object | string][];\n}\n\ninterface RawPostcssConfiguration {\n plugins?: Record<string, object | boolean | string> | (string | [string, object])[];\n}\n\nconst postcssConfigurationFiles: string[] = ['postcss.config.json', '.postcssrc.json'];\nconst tailwindConfigFiles: string[] = [\n 'tailwind.config.js',\n 'tailwind.config.cjs',\n 'tailwind.config.mjs',\n 'tailwind.config.ts',\n];\n\nexport interface SearchDirectory {\n root: string;\n files: Set<string>;\n}\n\nexport function generateSearchDirectories(roots: string[]): SearchDirectory[] {\n return roots.map(root => {\n return {\n root,\n files: new Set(\n readdirSync(root, { withFileTypes: true })\n .filter(entry => entry.isFile())\n .map(entry => entry.name),\n ),\n };\n });\n}\n\nfunction findFile(searchDirectories: SearchDirectory[], potentialFiles: string[]): string | undefined {\n for (const { root, files } of searchDirectories) {\n for (const potential of potentialFiles) {\n if (files.has(potential)) {\n return join(root, potential);\n }\n }\n }\n\n return undefined;\n}\n\nexport function findTailwindConfiguration(searchDirectories: SearchDirectory[]): string | undefined {\n return findFile(searchDirectories, tailwindConfigFiles);\n}\n\nfunction readPostcssConfiguration(configurationFile: string): RawPostcssConfiguration {\n const data = readFileSync(configurationFile, 'utf-8');\n const config = JSON.parse(data) as RawPostcssConfiguration;\n\n return config;\n}\n\nexport function loadPostcssConfiguration(searchDirectories: SearchDirectory[]): PostcssConfiguration | undefined {\n const configPath = findFile(searchDirectories, postcssConfigurationFiles);\n if (!configPath) {\n return undefined;\n }\n\n const raw = readPostcssConfiguration(configPath);\n\n // If no plugins are defined, consider it equivalent to no configuration\n if (!raw.plugins || typeof raw.plugins !== 'object') {\n return undefined;\n }\n\n // Normalize plugin array form\n if (Array.isArray(raw.plugins)) {\n if (raw.plugins.length < 1) {\n return undefined;\n }\n\n const config: PostcssConfiguration = { plugins: [] };\n for (const element of raw.plugins) {\n if (typeof element === 'string') {\n config.plugins.push([element]);\n } else {\n config.plugins.push(element);\n }\n }\n\n return config;\n }\n\n // Normalize plugin object map form\n const entries = Object.entries(raw.plugins);\n if (entries.length < 1) {\n return undefined;\n }\n\n const config: PostcssConfiguration = { plugins: [] };\n for (const [name, options] of entries) {\n if (!options || (typeof options !== 'object' && typeof options !== 'string')) {\n continue;\n }\n\n config.plugins.push([name, options]);\n }\n\n return config;\n}\n"]}