build.mjs 890 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env node
  2. import { buildIcons } from '../../.build/build-icons.mjs'
  3. const componentTemplate = ({
  4. name,
  5. children,
  6. stringify
  7. }) => {
  8. return `\
  9. <script lang="ts">
  10. import Icon from '../Icon.svelte';
  11. import type { IconNode, IconProps } from '../types.js';
  12. type $$Props = IconProps;
  13. const iconNode: IconNode = ${JSON.stringify(children)};
  14. </script>
  15. <Icon name="${name}" {...$$props} iconNode={iconNode}>
  16. <slot/>
  17. </Icon>
  18. `;
  19. };
  20. const aliasTemplate = ({ fromPascal, to }) => `export { default as Icon${fromPascal} } from './icons/${to}.svelte';\n`
  21. const indexItemTemplate = ({
  22. name,
  23. namePascal
  24. }) => `export { default as ${namePascal} } from './${name}.svelte';`
  25. buildIcons({
  26. name: 'icons-svelte',
  27. componentTemplate,
  28. indexItemTemplate,
  29. aliasTemplate,
  30. extension: 'svelte',
  31. pretty: false,
  32. key: false,
  33. indexFile: 'icons/index.ts',
  34. pascalName: false,
  35. })