build.mjs 942 B

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