generate-github-markdown-css.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Run this script whenever the `github-markdown-css` dependency is updated in
  2. // order to regenerate GitHub styles.
  3. const fs = require('fs/promises');
  4. const path = require('path');
  5. const dedent = require('dedent');
  6. const ASSETS = path.resolve(__dirname, '..', 'assets')
  7. const ASSET_LIGHT = require.resolve('github-markdown-css/github-markdown-light.css')
  8. const ASSET_DARK = require.resolve('github-markdown-css/github-markdown-dark.css')
  9. async function run() {
  10. let lightContents = (await fs.readFile(ASSET_LIGHT)).toString();
  11. let darkContents = (await fs.readFile(ASSET_DARK)).toString();
  12. let lightCSSAuto = lightContents.replace(/\.markdown-body\b/g, '.markdown-preview[data-use-github-style="auto"]');
  13. let darkCSSAuto = darkContents.replace(/\.markdown-body\b/g, '.markdown-preview[data-use-github-style="auto"]');
  14. const autoCSSMode = dedent`
  15. @media (prefers-color-scheme: light) {
  16. ${lightCSSAuto}
  17. }
  18. @media (prefers-color-scheme: dark) {
  19. ${darkCSSAuto}
  20. }
  21. `;
  22. let lightCSSMode = lightContents.replace(/\.markdown-body\b/g, '.markdown-preview[data-use-github-style="light"]');
  23. let darkCSSMode = darkContents.replace(/\.markdown-body\b/g, '.markdown-preview[data-use-github-style="dark"]');
  24. await fs.writeFile(path.join(ASSETS, 'github-markdown-auto.css'), autoCSSMode);
  25. await fs.writeFile(path.join(ASSETS, 'github-markdown-light.css'), lightCSSMode);
  26. await fs.writeFile(path.join(ASSETS, 'github-markdown-dark.css'), darkCSSMode);
  27. }
  28. run()