Задать вопрос
  • Как создать SVG-спрайт в сборщике ViteJS?

    @real-name
    Я всё-таки решил остаться с плагином vite-svg-sprite-wrapper.
    Только для ожидаемой работы в production-режиме нужно прибегнуть к ещё одному плагину, а именно vite-plugin-static-copy. vite.vonfig.js выглядит так:
    import { defineConfig } from 'vite';
    import vue from '@vitejs/plugin-vue';
    import ViteSvgSpriteWrapper from 'vite-svg-sprite-wrapper';
    import viteStaticCopy from 'vite-plugin-static-copy';
    import path from 'path'
    
    export default defineConfig({
      base: './',
      resolve: {
        alias: {'@': path.resolve(__dirname, './src')},
      },
      plugins: [
        vue(),
        ViteSvgSpriteWrapper({
          outputDir: 'src/assets',
        }),
        viteStaticCopy({
          targets: [
            {
              src: 'src/assets/sprite.svg',
              dest: 'assets',
            },
          ],
        }),
      ],
    })


    Я создал компонент SvgIcon.vue:
    <template>
      <svg :width="width" :height="height">
        <use :href="`/assets/sprite.svg#${name}-${width}`"></use>
      </svg>
    </template>
    
    <script>
    
    export default {
      name: 'svg-icon',
      props: {
        name: {
          type: String,
          required: true,
        },
        width: {
          type: Number,
          default: 32,
        },
        height: {
          type: Number,
          default: 32,
        },
      },
    }
    </script>
    Ответ написан
    Комментировать