Inline the css-variables-parser
dependency (#29571)
Get rid of the `postcss@7` dependency by inlining this simple function. (cherry picked from commit d769b664dedb5f63b73146b58b21c0a772c2630d)
This commit is contained in:
parent
2e9ca0597d
commit
eadf1d4fa3
3 changed files with 24 additions and 41 deletions
|
@ -1,9 +1,28 @@
|
|||
import {readFileSync} from 'node:fs';
|
||||
import {env} from 'node:process';
|
||||
import {parse} from 'css-variables-parser';
|
||||
import {parse} from 'postcss';
|
||||
|
||||
const isProduction = env.NODE_ENV !== 'development';
|
||||
|
||||
function extractRootVars(css) {
|
||||
const root = parse(css);
|
||||
const vars = new Set();
|
||||
root.walkRules((rule) => {
|
||||
if (rule.selector !== ':root') return;
|
||||
rule.each((decl) => {
|
||||
if (decl.value && decl.prop.startsWith('--')) {
|
||||
vars.add(decl.prop.substring(2));
|
||||
}
|
||||
});
|
||||
});
|
||||
return Array.from(vars);
|
||||
}
|
||||
|
||||
const vars = extractRootVars([
|
||||
readFileSync(new URL('web_src/css/themes/theme-gitea-light.css', import.meta.url), 'utf8'),
|
||||
readFileSync(new URL('web_src/css/themes/theme-gitea-dark.css', import.meta.url), 'utf8'),
|
||||
].join('\n'));
|
||||
|
||||
export default {
|
||||
prefix: 'tw-',
|
||||
important: true, // the frameworks are mixed together, so tailwind needs to override other framework's styles
|
||||
|
@ -23,15 +42,10 @@ export default {
|
|||
theme: {
|
||||
colors: {
|
||||
// make `tw-bg-red` etc work with our CSS variables
|
||||
...Object.fromEntries(
|
||||
Object.keys(parse([
|
||||
readFileSync(new URL('web_src/css/themes/theme-gitea-light.css', import.meta.url), 'utf8'),
|
||||
readFileSync(new URL('web_src/css/themes/theme-gitea-dark.css', import.meta.url), 'utf8'),
|
||||
].join('\n'), {})).filter((prop) => prop.startsWith('color-')).map((prop) => {
|
||||
const color = prop.substring(6);
|
||||
return [color, `var(--color-${color})`];
|
||||
})
|
||||
),
|
||||
...Object.fromEntries(vars.filter((prop) => prop.startsWith('color-')).map((prop) => {
|
||||
const color = prop.substring(6);
|
||||
return [color, `var(--color-${color})`];
|
||||
})),
|
||||
inherit: 'inherit',
|
||||
current: 'currentcolor',
|
||||
transparent: 'transparent',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue