Skip to content

Setup @neodx/svg with other bundlers

As you could know from sections before, @neodx/svg provides two ways to use it:

To achieve the second option, we're using unplugin, so you can use any plugin that it supports.

Webpack

typescript
const svg = require('@neodx/svg/webpack');

module.exports = {
  plugins: [
    svg({
      inputRoot: 'src/shared/ui/icon/assets',
      output: 'public/sprites',
      fileName: '{name}.{hash:8}.svg',
      metadata: 'src/shared/ui/icon/sprite.gen.ts'
    })
  ]
};

Rollup

typescript
import svg from '@neodx/svg/rollup';

export default {
  plugins: [
    svg({
      inputRoot: 'src/shared/ui/icon/assets',
      output: 'public/sprites',
      fileName: '{name}.{hash:8}.svg',
      metadata: 'src/shared/ui/icon/sprite.gen.ts'
    })
  ]
};

ESBuild

typescript
import { build } from 'esbuild';
import svg from '@neodx/svg/esbuild';

build({
  plugins: [
    svg({
      inputRoot: 'src/shared/ui/icon/assets',
      output: 'public/sprites',
      fileName: '{name}.{hash:8}.svg',
      metadata: 'src/shared/ui/icon/sprite.gen.ts'
    })
  ]
});

RSPack

typescript
const svg = require('@neodx/svg/rspack');

module.exports = {
  plugins: [
    svg({
      inputRoot: 'src/shared/ui/icon/assets',
      output: 'public/sprites',
      fileName: '{name}.{hash:8}.svg',
      metadata: 'src/shared/ui/icon/sprite.gen.ts'
    })
  ]
};

Released under the MIT License.