Existe-t-il une option pour transmettre les options svgo au chargeur svgr / webpack? Je veux supprimer les attributs de largeur et de hauteur et conserver la zone de visualisation, par défaut, il les supprime.
{ test: /\.svg$/, use: ['@svgr/webpack'], options : { svgo: { // Something like this ? mergePaths: false, removeViewbox: false, removeAttrs: true, }} },
3 Réponses :
Il a une syntaxe un peu déroutante avec des paramètres imbriqués. Voici ce que j'utilise pour désactiver les identifiants de préfixe et les noms de classe. Je suppose que dans votre cas, ce sera quelque chose comme mergePaths.active = false
, removeViewbox.active = false
.
loader: '@svgr/webpack', options: { svgoConfig: { plugins: [{ removePaths: { active: false, } },{ removeViewbox: { active: false, } },{ removeAttrs: { active: true, } }] } }
Je n'ai pas testé, mais je suppose que cela ressemblerait à ceci (ou similaire, vous pourriez jouer un peu avec pour obtenir la bonne syntaxe):
loader: '@svgr/webpack', options: { svgoConfig: { plugins: [{ prefixIds: { prefixIds: false, prefixClassNames: false } }] } }
Regardez dans le code ici, où vous pouvez déterminer quels accessoires sont réellement exportés: https://github.com/svg/svgo
Je viens de passer de svgr car il n'y a aucune documentation sur la façon de passer des arguments à svgo. react-svg-loader
, d'autre part, a une documentation et fonctionne de la même manière, donc je recommanderais aux gens de l'utiliser
Je pense que le doco pour le svgr
est assez bien, il suffit de jouer avec. Vous devez considérer qu'il est gratuit et open source et donc l'auteur le fait pendant son temps libre. Je regardais aussi svgr
react-svg-loader
lors de la prise de décision, mais svgr
fonctionnait mieux pour moi. Mais c'est vrai que j'ai dû comprendre quelques éléments du code car ils n'étaient pas décrits en détail dans le doco.
Je n'ai pas pu trouver un moyen de passer des arguments via svgr à svgo, alors je suis passé à react react-svg-loader
qui a une documentation sur la façon d'y parvenir:
{ test: /\.svg$/, use: [ 'babel-loader', { loader: 'react-svg-loader', options: { svgo: { plugins: [{ removeDimensions: true, removeViewBox: false }], floatPrecision: 2, }, }, }, ], },