-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild.mjs
46 lines (37 loc) · 982 Bytes
/
build.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import {
existsSync,
mkdirSync,
readdirSync,
readFileSync,
rmSync,
writeFileSync,
} from "fs";
import pascalcase from "pascalcase";
const directoryMap = {
"16/solid": "micro",
"20/solid": "mini",
"24/outline": "outline",
"24/solid": "solid",
};
const heading = `---
import type { HTMLAttributes } from "astro/types";
export type Props = HTMLAttributes<'svg'>
---
`;
Object.keys(directoryMap).forEach((dir) => {
const files = readdirSync(`./node_modules/heroicons/${dir}`);
const outDir = `./${directoryMap[dir]}`;
if (existsSync(outDir)) {
rmSync(outDir, { recursive: true });
}
mkdirSync(outDir, { recursive: true });
files.forEach((file) => {
const content = readFileSync(
`./node_modules/heroicons/${dir}/${file}`,
"utf8"
);
const next = content.replace(`<svg `, `<svg {...Astro.props} `);
const [name] = file.split(".");
writeFileSync(`${outDir}/${pascalcase(name)}.astro`, heading + next);
});
});