-
Notifications
You must be signed in to change notification settings - Fork 3
/
generate.js
84 lines (61 loc) · 2.63 KB
/
generate.js
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import * as elmTailwindModules from "elm-tailwind-modules";
import autoprefixer from "autoprefixer";
import typography from "@tailwindcss/typography";
import forms from "@tailwindcss/forms";
import aspectRatio from "@tailwindcss/aspect-ratio";
import fs from "fs";
import lockfile from "@yarnpkg/lockfile";
// Find out which tailwind version is used
let tailwindVersion, elmTailwindModulesVersion;
try {
const yarnLockFile = fs.readFileSync("yarn.lock", "utf8");
const yarnLock = lockfile.parse(yarnLockFile).object;
const pkgJson = fs.readFileSync("package.json", "utf8");
const pkg = JSON.parse(pkgJson);
tailwindVersion = yarnLock[`tailwindcss@${pkg.dependencies.tailwindcss}`].version;
elmTailwindModulesVersion = yarnLock[`elm-tailwind-modules@${pkg.dependencies["elm-tailwind-modules"]}`].version;
} catch {
console.error("Couldn't figure out tailwind and/or elm-tailwind-modules version. Make sure to run yarn install first.");
process.exit(1);
}
console.log(`Generating for tailwindcss version ${tailwindVersion} using elm-tailwind-modules version ${elmTailwindModulesVersion}.`);
// Create a custom documentation generator that contains the tailwind version used
const docGen = {
...elmTailwindModules.docs.defaultDocumentationGenerator,
utilitiesModuleDocs: definedNames => `
{-|
## Tailwind Utilities
This module contains
1. Tailwind's style reset in the \`globalStyles\` definition.
Make sure to include this in your HTML via elm-css' \`Css.Global.global\` function.
2. All default tailwind css utility classes from **tailwind version ${tailwindVersion}.**
You can browse the documentation on
[tailwind's website](https://tailwindcss.com/docs)
These utilities were generated using [elm-tailwind-modules](https://github.com/matheus23/elm-tailwind-modules) version ${elmTailwindModulesVersion}.
${definedNames.map(c => `@docs ${c}`).join("\n")}
-}
`,
utilitiesDefinition: (_elmName, declaration) => `
{-| The [tailwind](https://tailwindcss.com/docs) class \`${declaration.originalClassName}\`.
-}
`,
utilitiesParameterizedDefinition: (_name, declaration) => `
{-| [Tailwind](https://tailwindcss.com/docs) classes of the form \`${declaration.originalClassName}\`, but with the color replaced by the first parameter.
-}`,
};
// Run elm-tailwind-modules
elmTailwindModules.run({
directory: "src",
generateDocumentation: docGen,
moduleName: "Tailwind",
postcssPlugins: [autoprefixer],
tailwindConfig: {
variants: [],
purge: false,
plugins: [
typography,
forms({ strategy: "class" }),
aspectRatio,
]
}
});