Lors de la création d'applications React.js, la gestion efficace des icônes SVG est cruciale. Les SVG offrent l'évolutivité et la flexibilité nécessaires à une conception réactive, mais leur gestion dans de grands projets peut devenir fastidieuse. C'est là qu'intervient svg-path-constants, un outil CLI conçu pour rationaliser votre flux de travail SVG en convertissant les chemins SVG en constantes réutilisables.
Dans un article précédent, "Une comparaison complète des options de gestion des icônes SVG dans les projets React.js", j'ai discuté de diverses méthodes de gestion des icônes SVG, notamment les SVG en ligne, les sprites SVG et l'utilisation des composants React pour chaque icône. Bien que chaque méthode ait ses avantages et ses inconvénients, un défi demeure : garder vos chemins SVG organisés et réutilisables.
L'utilisation de constantes pour les chemins SVG permet d'obtenir une petite taille de bundle et un temps de construction rapide.
svg-path-constants est un outil CLI qui vous aide à générer des constantes à partir de fichiers SVG, facilitant ainsi l'intégration et la gestion des icônes SVG dans vos projets React. Il convertit les chemins SVG en constantes JS, prend en charge des conventions de dénomination flexibles et permet une sortie personnalisable.
Vous pouvez commencer à utiliser les constantes de chemin svg immédiatement avec npx :
npx svg-path-constants@latest
Vous pouvez également l'installer globalement ou en tant que dépendance de développement :
npm install -g svg-path-constants npm install --save-dev svg-path-constants
Disons que vous avez des fichiers SVG dans src/assets/icons et que vous souhaitez générer des constantes dans src/components/Icon/paths.js :
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/paths.js
Exemple de sortie :
// src/components/Icon/paths.js export const folderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path export const folderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
Spécifiez un format de dénomination différent, comme PascalCase :
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/paths.js -f PascalCase
Exemple de sortie :
// src/components/Icon/paths.js export const FolderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path export const FolderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
Contrôlez le nom et la sortie du fichier avec un modèle personnalisé :
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/{-2,-1}/{0}.js -t "{1,-3}"
Exemple de sortie :
// src/components/Icon/folder/icon1.js export const folderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path // src/components/Icon/folder/icon2.js export const folderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
svg-path-constants peuvent convertir des attributs SVG tels que l'opacité, le remplissage-opacité, le trait et le remplissage en composants de la chaîne de chemin.
Constante du chemin généré :
export const myIcon = "o0.5 O0.8 fff000 F00ff00 M10 10 H 90 V 90 H 10 Z";
Cette fonctionnalité vous permet de conserver les informations de style essentielles directement dans la chaîne de chemin, en conservant une représentation compacte et informative.
Une fois que vous avez généré des constantes de chemin SVG avec les constantes de chemin SVG, vous pouvez facilement les intégrer dans vos composants React. Cela permet non seulement de garder votre code propre, mais permet également une réutilisation facile des chemins SVG dans votre application.
Supposons que vous ayez déjà exécuté la commande suivante pour générer des constantes à partir de vos fichiers SVG :
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/paths.js
Cette commande génère un fichier src/components/Icon/paths.js avec des constantes telles que :
// src/components/Icon/paths.js export const folderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path export const folderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
Maintenant, créons un composant React qui restitue ces icônes SVG à l'aide des constantes générées.
import React from 'react'; import { folderIcon1, folderIcon2 } from './paths'; // Import the generated SVG path constants const parsePathData = (d) => { const pathElements = []; const pathCommands = d.split(/(o[\d.] |O[\d.] |f[0-9a-fA-F] |F[0-9a-fA-F] )/); // Split by style commands let attributes = null; pathCommands.forEach((text, i) => { const isCommand = Boolean(i % 2); if (isCommand) { if (!attributes) { attributes = {}; } const match = text.match(/^(o([\d.] ))?(O([\d.] ))?(f([0-9a-fA-F] ))?(F([0-9a-fA-F] ))?$/); const [, , opacity, , fillOpacity, , stroke, , fill] = match; if (opacity) attributes.opacity = opacity; if (fillOpacity) attributes["fill-opacity"] = fillOpacity; if (stroke) attributes.stroke = `#${stroke}`; if (fill) attributes.fill = `#${fill}`; return; } if (text.trim().length) { pathElements.push({ ...attributes, d: text }); } }); return pathElements; }; const SvgIcon = ({ d, size = 24, color = 'currentColor', ...props }) => { const pathElements = parsePathData(d); return ( ); }; const IconDemo = () => (); export default IconDemo;SVG Icon Examples
Folder Icon 1
Folder Icon 2
Vous pouvez désormais utiliser le composant IconDemo n'importe où dans votre application React pour afficher les icônes SVG :
import React from 'react'; import ReactDOM from 'react-dom'; import IconDemo from './components/Icon/IconDemo'; ReactDOM.render(, document.getElementById('root') );
Fonction parsePathData :
Composant SVGIcon :
Composant IconDemo :
Je travaille actuellement sur une bibliothèque npm qui améliorera les constantes de chemin svg en ajoutant des images raster (PNG) comme commentaires au-dessus de chaque constante générée. Cela fournira une représentation visuelle de l'icône directement dans votre code, facilitant ainsi l'identification et la gestion des chemins SVG.
La gestion des chemins SVG dans les projets React ne doit pas être un problème. Avec les constantes de chemin svg, vous pouvez garder vos icônes organisées, votre code propre et votre flux de travail efficace. Et bientôt, avec la prochaine bibliothèque permettant d'ajouter des images raster aux commentaires d'icônes, vous disposerez d'un moyen encore plus visuel et intuitif de gérer vos ressources SVG.
Essayez les constantes de chemin svg aujourd'hui :
npx svg-path-constants@latest
Et restez à l'écoute pour plus de mises à jour !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3