npm包@svgr/plugin-svgo使用教程

什么是@svgr/plugin-svgo

@svgr/plugin-svgo是一个npm包,它是svgr的一个插件,用于将SVG图像优化为更小、更优化的SVG。

如何安装

首先需要安装 svgo@svgr/core 这两个npm包:

- ---
--- ------- -- ---- ----------

- ----
---- --- ---- ---------- -----

然后安装 @svgr/plugin-svgo

- ---
--- ------- -- -----------------

- ----
---- --- ----------------- -----

如何使用

安装完成后,我们来看一下如何使用@svgr/plugin-svgo。

首先,在项目中添加一个SVG文件夹,在其中添加一个名为 logo.svg 的文件。内容如下:

---- ---------------------------------- ---------- - ----- -------
    ----- -------------- --------- ---------- - - --- - ------------ ---- --- ---- ---- --------------- - -------- ------------------------------------------------ ------------------------- -------------------------------------------- - ---- --- ---- ----------------------- ----------- ------ ------- ---- - ---- ---- ---- ---- ---- ---- - --------- ------------------------------------------ ------------------------------------ --------- ------------------ ----------- ---- --- ---- -- ------------------------------------------------------------------------------------- --------- --------- -------------------------------------------------------- ------ -------- ------- --------- --------- --------- ------------ --------- ------- -------- --------- --------- ---- - ---- --- ---- ---- ---- -- ---- ---- ---- ---- ---- ---- ---- -- ---- ---- --- ---- --- ---- --- -----------------------
------

然后在 package.json 中添加以下配置:

-
  ------- -
    ---------- -
      -
        --------------------
        -
          ---------- -
            -
              ------- ----------------
              --------- -----
            --
            -
              ------- -------------
              --------- -
                --------- ----
              -
            --
            -
              ------- --------------
              --------- -
                -------- ---------------------
              -
            -
          -
        -
      -
    -
  -
-

plugins 数组告诉 svgr 应该使用哪些插件,此时我们只使用了 @svgr/plugin-svgo 作为第一个并且唯一的插件。

@svgr/plugin-svgo 接受一个选项对象作为第二个参数,这个对象将被传递给SVGO来配置其行为。

注意,@svgr/plugin-svgo 默认不会清除 viewBox 属性,但是由于我们的SVG没有任何变形,因此没有必要保留它。设定removeViewBox插件的active属性为false,表示禁用它。

接下来是 cleanupIDs 插件,它使用了 minify 参数以保证生成的ID尽可能的短小和有意义。

最后,removeAttrs 插件用于删除未使用的 stroke-widthfill 属性,使SVG更加简洁。

接着,我们要编写一个脚本命令,将SVG文件转换为React元素。在 package.json 中添加以下配置:

-
  ---------- -
    ------------- ----- ---- ------ --------- -------- -- ---------------------
  -
-

在这里,我们使用 svgr 命令并传递一些选项:

  • --icon 表示我们希望生成的组件被预处理为图标
  • --no-svgo 表示我们不想对SVG文件应用SVGO优化
  • src/svg/ 是我们的SVG文件所在的目录
  • -d src/components/icons 是我们的React元素应该放置的目录

现在我们可以用以下命令来生成React元素:

- ---
--- --- ----------

- ----
---- ----------

生成的文件位于 src/components/icons/logo.js,和下面的代码类似:

------ - -- ----- ---- --------

-------- ------------------- -
  ------ -
    ---- ---------------------------------- ---------- - ----- ------ -----------
      ----- --------- ---------- - - --- - ------------ ---- --- ---- ---- --------------- - -------- ------------------------------------------------ ------------------------- -------------------------------------------- - ---- --- ---- ----------------------- ----------- ------ ------- ---- - ---- ---- ---- ---- ---- ---- - --------- ------------------------------------------ ------------------------------------ --------- ------------------ ----------- ---- --- ---- -- ------------------------------------------------------------------------------------- --------- --------- -------------------------------------------------------- ------ -------- ------- --------- --------- --------- ------------ --------- ------- -------- --------- --------- ---- - ---- --- ---- ---- ---- -- ---- ---- ---- ---- ---- ---- ---- -- ---- ---- --- ---- --- ---- --- --------------------- --
    ------
  --
-

------ ------- -------------

总结

本篇文章介绍了如何使用@svgr/plugin-svgo对SVG图像进行优化,以及如何将SVG文件转换为React元素。这个插件可以帮助我们生成更小、更优化的SVG文件,可以用于提高页面性能和减少首次加载时间。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/102112


猜你喜欢

  • npm 包 @types/source-list-map 使用教程

    在前端开发中,我们可能会用到 @types/source-list-map 这个 npm 包,它是一种源列表映射类型的类型定义库,可用于将 JavaScript 代码映射为输出文件中的源位置。

    5 年前
  • npm 包 @easy-webpack/core 使用教程

    什么是 @easy-webpack/core @easy-webpack/core 是一个为 webpack 打造的易于使用的工具集,它提供了许多常用的、能力强大的 webpack 插件,让使用 we...

    5 年前
  • npm包@easy-webpack/config-output-library使用教程

    前言 对于前端开发人员来说,npm已经成为不可或缺的开发工具。它不仅可以用于管理项目中的第三方库,还可以用来发布自己的npm包。在前端项目中,我们需要将我们的代码打包成一个或多个JavaScript文...

    5 年前
  • npm包 @holisticon/angular-common 使用教程

    在现代Web应用程序开发中,Angular框架已经成为了非常流行的选择之一。然而,随着应用程序的复杂性不断提高,常常需要编写大量的重复代码来处理共同的任务(例如HTTP请求处理、表单验证等)。

    5 年前
  • npm 包 @mercateo/ws 使用教程

    介绍 @mercateo/ws 是一个基于 WebSocket 的 WebSocket client 和 server 的 JavaScript 库。它可以方便地实现 WebSocket 的连接和发送...

    5 年前
  • npm 包 @types/html-minifier 使用教程

    前言 在前端开发中,一个网站经常需要包含数百上千甚至更多行的 HTML 代码,这数量的代码极大地增加了加载网站所需花费的时间。此时,对 HTML 代码进行压缩是必要的操作。

    5 年前
  • npm 包 @types/gulp-uglify 使用教程

    概述 @types/gulp-uglify 是一个 npm 包,提供了 gulp-uglify 的 TypeScript 类型定义,使得使用 gulp-uglify 时能够获得更好的代码提示和类型检查...

    5 年前
  • npm 包 @neo-one/client 使用教程

    什么是 @neo-one/client @neo-one/client 是一个针对 NEO 区块链的 JavaScript 客户端库。它包含了许多针对 NEO 区块链的 API,比如可以创建智能合约、...

    5 年前
  • npm 包 @microsoft/set-webpack-public-path-plugin 使用教程

    前言 在开发 Web 应用程序时,我们通常会使用 Webpack 来构建我们的应用程序。Web 应用程序一般会包含多个页面,这些页面可能会位于不同的目录下,然而它们都需要引用我们构建出来的代码,而且代...

    5 年前
  • npm 包 @microsoft/resolve-chunk-plugin 使用教程

    前端开发中,对于打包和优化代码是重要的环节。Webpack 是一款非常流行的打包工具,它提供了各种插件和参数用于增强打包功能。其中,@microsoft/resolve-chunk-plugin 是一...

    5 年前
  • npm 包 @blackbaud/help-client 使用教程

    前言 社区和开发者一直在寻找更好的解决方案来管理和共享自己创建的代码。Node Package Manager (NPM) 是一个流行的包管理器,它允许开发者从各种来源轻松地安装、更新和卸载不同的包。

    5 年前
  • npm 包 ts-bundlify 使用教程

    在前端开发中,我们经常需要将 TypeScript 代码编译成 JavaScript 代码并进行打包,以便于在浏览器中运行。而 ts-bundlify 就是一个能够较为方便地进行 TypeScript...

    5 年前
  • npm 包 @develar/semantic-release 使用教程

    前言 在前端开发中,发布是至关重要的一环。而语义化版本控制则是管理发布的一种方式。为了简化这一流程,存在着一款名为 @develar/semantic-release 的 npm 包。

    5 年前
  • npm 包 @cus/semantic-release-npm 使用教程

    简介 在开发前端项目的过程中,我们常常需要手动进行版本控制和发布。这不仅费时费力,还容易出现错误。为了解决这个问题,有许多工具和自动化流程被开发出来。其中,一个非常好用的工具就是 semantic-r...

    5 年前
  • npm 包 @continous-auth/semantic-release-npm 使用教程

    前言 @continous-auth/semantic-release-npm 是一个用于自动化管理 npm 包版本的工具。与传统的手动管理版本不同,它通过根据 Git 提交记录自动判断需要发布的版本...

    5 年前
  • npm 包 @artemv/semantic-release 使用教程

    前言 在前端开发中,我们经常需要管理和发布 JavaScript 包。对于包的版本管理和发布升级,我们经常使用 Semver 规范来约束版本号。手动管理版本号和发布流程是件繁琐的事情,而 semant...

    5 年前
  • npm 包 octokit-pagination-methods 使用教程

    octokit-pagination-methods 是一个基于 Node.js 平台的 npm 包,它可以帮助我们在 GitHub API 中进行分页查询操作。在项目开发中,我们经常需要通过 Git...

    5 年前
  • Npm 包 Deprecation 使用教程

    在前端开发中,我们使用各种 npm 包来辅助开发工作,但是这些 npm 包可能会因为各种原因被废弃或替代。当我们使用一个被废弃的包时,可能会遇到一些问题。此时,npm 提供了一个 Deprecatio...

    5 年前
  • npm 包 btoa-lite 使用教程

    在前端开发中,我们可能会遇到需要将字符串转为 base64 编码的情况,而 btoa 是一个 JavaScript 原生的方法,可以完成这一操作。但是,在某些情况下,btoa 方法的兼容性并不理想,这...

    5 年前
  • npm 包 before-after-hook 使用教程

    在前端开发中,我们不可避免地需要对某些操作进行拦截,并在这些操作的前后执行一些额外的逻辑处理。在这种情况下,使用 before-after-hook 这个 npm 包可以大大简化我们的开发工作。

    5 年前

相关推荐

    暂无文章