svgr
vite-plugin-svgr
svgr | vite-plugin-svgr | |
---|---|---|
31 | 6 | |
10,508 | 545 | |
- | - | |
4.3 | 5.5 | |
19 days ago | about 1 month ago | |
TypeScript | TypeScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
svgr
-
Design System Starter Template - All Technology You'll Ever Need
The Icons and Fonts modules add depth to the visual language. Icons are managed through an efficient process that generates components from SVG files using SVGR and tsup. This ensures that icons are consistent and can be flexibly integrated across the system.
-
Nx + NextJS + Docker - The Nx way: Creating the NextJS application
//@ts-check // eslint-disable-next-line @typescript-eslint/no-var-requires const { composePlugins, withNx } = require('@nx/next'); /** * @type {import('@nx/next/plugins/with-nx').WithNxOptions} **/ const nextConfig = { nx: { // Set this to true if you would like to use SVGR // See: https://github.com/gregberge/svgr svgr: false, }, }; const plugins = [ // Add more Next.js plugins to this list if needed. withNx, ]; module.exports = composePlugins(...plugins)(nextConfig);
- Easily use SVGs as JSX/TSX in your ReactJs app
- How do I use SVG icons in React?
-
SVGR for your React app
Most of the time, developers tend to add svg images to an assets directory and import them either directly or as a React component. This process not only increases your app bundle size but also makes managing all the assets difficult. What if there was a way to manage all the application icons like the way we import them from any other icon library? Yes, react-svgr helps you manage all the icons in your React application.
-
What would be the best way to implement SVG's into your project?
If you are using react, there is a tool called SVGR, which will take in an SVG file and return a react component with all the props. This can be really useful if you want to treat SVG more like a markup that will be embedded directly into your HTML. This becomes really helpful when you want to style SVG through props or add transformations and animations. Using SVG directly in markup has so many perks and advantages to the point i don't use them as source in image tags.
-
One way of building an SVG icon library for your project
Really interesting framework agnostic approach, but I think SVGR is a better option for my React homies. It imports an SVG file as a React component. Shouts also to react-icons if Font Awesome, Material Icons and friends are more your bag.
-
Alternative libs to migrate from React to Vue (or Vue to React)
SVGR
-
Power up SVGs with React and CSS
There is another way to import an SVG in Create React App, though. We can import the SVG as a ReactComponent. This is because CRA leverages SVGR to process SVGs.
-
Создаем React-компоненты иконок с помощью Figma API и SVGR. Часть 2.
const { types } = require('@babel/core'); module.exports = { ... template: function svgrCustomTemplate( { imports, interfaces, componentName, props, jsx, exports }, { tpl } ) { // меняем корневой элемент на SvgIcon jsx.openingElement.name.name = 'SvgIcon'; jsx.closingElement.name.name = 'SvgIcon'; // https://github.com/gregberge/svgr/issues/530 // при изменении корневого элемента пропадает спред пропсов // поэтому необходимо добавить спред пропсов самостоятельно jsx.openingElement.attributes.push( types.jSXSpreadAttribute(types.identifier('props')) ); return tpl` ${imports}; import { SvgIcon } from '../SvgIcon'; ${interfaces}; const ${componentName} = (${props}) => ( ${jsx} ); ${exports}; ` } }
vite-plugin-svgr
-
From Parcel to Vite: A short story of a 100K LOC migration
We use the vite-plugin-svgr plugin to convert SVGs to React components. It's as simple as adding the plugin to the Vite config:
-
Why and How to Migrate Your React App from CRA to Vite
You can check out vite-plugin-svgr to learn more about how to install and use svgr() and all the configuration options that it exposes.
-
Chrome Extension with React + CRXJS + Vite + Docker
If you want to use svg with React components, install vite-plugin-svgr.
-
Migrating from Create React App (CRA) to Vite
We need vite-plugin-svgr in order to import SVGs as React components. For example:
-
Repeating variable names for imports, types and switch. Got to be a better way!
If you're using Vite, then maybe try one of these: - https://github.com/pd4d10/vite-plugin-svgr - https://github.com/vbenjs/vite-plugin-svg-icons
-
Using Vite with React
Instead of webpack svgr - vite has a community plugin vite-plugin-svgr. Looking at its source code I can tell that it does the work as needed. In the future, I may want to add more SVGR options (currently for custom colors we use css currentColor property), so I may contribute it or create a similar plugin. NOTE: vite bundles the static svg in addition to assets even if you use vite-plugin-svgr. So many useless files will be generated. This is a minor issue that can be unnoticeable. I created a script for deleting those files (it has 0 impacts on the bundle because the client does not download those chunks).
What are some alternatives?
svg-sprite-loader - Webpack loader for creating SVG sprites.
webpack-bundle-analyzer - Webpack plugin and CLI utility that represents bundle content as convenient interactive zoomable treemap
svgo - ⚙️ Node.js tool for optimizing SVG files
react-markdown - Markdown component for React
esbuild - An extremely fast bundler for the web
awesome-vite - ⚡️ A curated list of awesome things related to Vite.js
vite-plugin-svg-icons - Vite Plugin for fast creating SVG sprites.
rollup-plugin-visualizer - 📈⚖️ Visuallize your bundle
raw-loader - A loader for webpack that allows importing files as a String
vite-tsconfig-paths - Support for TypeScript's path mapping in Vite
nivo - nivo provides a rich set of dataviz components, built on top of the awesome d3 and React libraries