Skip to main content

SVG spritesheet maker

Project description

ssm

SVG spritesheet maker

CI Deployment to PyPI

ssm is a simple approach to creating and managing SVG spritesheets. It has 5 main functions:

  • create: For creating spritesheets from a list of SVG sprites (i.e. SVG icons etc.)
  • list: For listing the SVG sprites stored in a spritesheet
  • add: For adding SVG sprites to an existing spritesheet
  • remove: For removing SVG sprites from an existing spritesheet
  • export: For exporting SVG sprites from an existing spritesheet. Can be used for converting a <symbol> back into a standalone <svg> or to display a format suitable for HTML (using <use>).

For more details, run python -m ssm -h after installation.

Installation

To install the most stable version of this package, run:

$ pip install ssm-svg

Usage example

Create spritesheet icons.svg with search.svg and menu.svg as sprites:

$ python -m ssm create -f icons.svg search.svg menu.svg
$ cat icons.svg
<?xml version='1.0' encoding='UTF-8'?>
<svg xmlns="http://www.w3.org/2000/svg">
  <defs>
    <symbol id="menu" viewBox="0 0 24 24">...</symbol>
    <symbol id="search" viewBox="0 0 24 24">...</symbol>
  </defs>
</svg>

Create spritesheet and overwrite existing file:

$ python -m ssm create -f icons.svg search.svg menu.svg -F

Create spritesheet with custom ID hamburger-icon instead of defaulting to its file name:

$ python -m ssm create -f icons.svg search.svg hamburger-icon=menu.svg
$ cat icons.svg
<?xml version='1.0' encoding='UTF-8'?>
<svg xmlns="http://www.w3.org/2000/svg">
  <defs>
    <symbol id="hamburger-icon" viewBox="0 0 24 24">...</symbol>
    <symbol id="search" viewBox="0 0 24 24">...</symbol>
  </defs>
</svg>

List IDs of SVG sprites in spritesheet:

$ python -m ssm list -f icons.svg
menu
search

Add SVG sprites to spritesheet:

$ python -m ssm add -f icons.svg facebook.svg instagram.svg
$ cat icons.svg
<?xml version='1.0' encoding='UTF-8'?>
<svg xmlns="http://www.w3.org/2000/svg">
  <defs>
    <symbol id="hamburger-icon" viewBox="0 0 24 24">...</symbol>
    <symbol id="search" viewBox="0 0 24 24">...</symbol>
    <symbol id="facebook" viewBox="0 0 24 24">...</symbol>
    <symbol id="instagram" viewBox="0 0 24 24">...</symbol>
  </defs>
</svg>

Remove SVG sprites with IDs facebook and instagram from spritesheet:

$ python -m ssm remove -f icons.svg facebook instagram
$ cat icons.svg
<?xml version='1.0' encoding='UTF-8'?>
<svg xmlns="http://www.w3.org/2000/svg">
  <defs>
    <symbol id="hamburger-icon" viewBox="0 0 24 24">...</symbol>
    <symbol id="search" viewBox="0 0 24 24">...</symbol>
  </defs>
</svg>

NOTE: Inserting the same ID more than once would cause an error.

Add SVG sprites to spritesheet with custom ID fb-icon instead of defaulting to its file name:

$ python -m ssm add -f icons.svg fb-icon=facebook.svg
$ cat icons.svg
<?xml version='1.0' encoding='UTF-8'?>
<svg xmlns="http://www.w3.org/2000/svg">
  <defs>
    <symbol id="hamburger-icon" viewBox="0 0 24 24">...</symbol>
    <symbol id="search" viewBox="0 0 24 24">...</symbol>
    <symbol id="fb-icon" viewBox="0 0 24 24">...</symbol>
  </defs>
</svg>

Export sprite with ID menu from spritesheet:

$ python -m ssm export -f icons.svg menu
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">...</svg>

Export sprite with ID menu from spritesheet for use in HTML:

$ python -m ssm export -f icons.svg menu --use
<svg><use href="icons.svg#menu"></use></svg>

Export sprite with IDs search and menu from spritesheet as exported_files/search.svg and exported_files/menu.svg respectively:

$ python -m ssm export -f icons.svg --dir exported_files search menu
$ cat exported_files/menu.svg
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">...</svg>
$ cat exported_files/search.svg
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">...</svg>

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ssm_svg-0.0.5.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ssm_svg-0.0.5-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file ssm_svg-0.0.5.tar.gz.

File metadata

  • Download URL: ssm_svg-0.0.5.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for ssm_svg-0.0.5.tar.gz
Algorithm Hash digest
SHA256 23d03ff42e6c20adc3686d0b4f4508ca56bea8c3fd1b96f983c33ea47b93b0d4
MD5 cea37a2839200be9b4ddebf213dd443e
BLAKE2b-256 2eb9edfdbb2fe8bbecb2ee7a971b01ecf0243a552a3dab5a912aeb525077f8cc

See more details on using hashes here.

File details

Details for the file ssm_svg-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: ssm_svg-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for ssm_svg-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 efa6675597685ba349d230c44862d123036ecae7744b55816439f0f7ad1cea44
MD5 fbab26a6c41ed8bfe2b761cc8a2e097b
BLAKE2b-256 06e927241032ef351febc9683c127269beadda3b77c589ecd0c2ca41002e53c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page