ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

SVG to JSX

by scitech ALL

Converts raw SVG in an open Sublime buffer to valid JSX

Labels svg, jsx, react

Details

Installs

  • Total 925
  • Win 433
  • Mac 360
  • Linux 132
Feb 29 Feb 28 Feb 27 Feb 26 Feb 25 Feb 24 Feb 23 Feb 22 Feb 21 Feb 20 Feb 19 Feb 18 Feb 17 Feb 16 Feb 15 Feb 14 Feb 13 Feb 12 Feb 11 Feb 10 Feb 9 Feb 8 Feb 7 Feb 6 Feb 5 Feb 4 Feb 3 Feb 2 Feb 1 Jan 31 Jan 30 Jan 29 Jan 28 Jan 27 Jan 26 Jan 25 Jan 24 Jan 23 Jan 22 Jan 21 Jan 20 Jan 19 Jan 18 Jan 17 Jan 16
Windows 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 2 0 1 0
Mac 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
Linux 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0

Readme

Source
raw.​githubusercontent.​com

Convert SVG to JSX

This plugin replaces SVG attributes with their JSX-valid equivalents and deletes common JSX-invalid attribute strings.

When is this useful?

  • If you're working on a React project with a lot of manual SVG manipulation.
  • If you're tired of repetitive find + replacing on the SVG assets pasted from Sketch or Illustrator.

Example

Say you have some SVG output from your graphics editor that you'd like to include in a React component. Using the markup directly will raise errors:

Error: language “jsx” is not supported
function Box() {
  return (
    <svg width="115px" height="125px" viewBox="0 0 115 125" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      <rect id="Rectangle" stroke="none" fill="#D8D8D8" fill-rule="evenodd" x="0" y="0" width="115" height="125"></rect>
    </svg>
  )
}

This plugin, accessible from the right-click menu and the main menu, will remove invalid properties and correct the casing of valid properties so you can use the SVG in a component's render method without errors:

Error: language “jsx” is not supported
function Box() {
  return (
    <svg width="115px" height="125px" viewBox="0 0 115 125" version="1.1">
      <rect id="Rectangle" stroke="none" fill="#D8D8D8" fillRule="evenodd" x="0" y="0" width="115" height="125"></rect>
    </svg>
  )
}

For complex illustrations with several distinct components to be animated, this can be quite useful!

When is this not useful?