JSPM

figmasset-export

0.0.5
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q39468F

Package Exports

  • figmasset-export

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (figmasset-export) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Figmasset-export

Simplifies exporting a number of assets from Figma to disk.

One use case for this is when a project that uses FigmassetJS, leaves the iterative design phase and moves into production. You can simply export all assets into a static image directory, and replace the FigmassetJS code with the snippet given below.

Usage

index.js --file <filekey> --frame <node ID or name> --out myassets [more
options]

Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
  --file     File key                                        [string] [required]
  --frame    Node id or name of frame containing assets       [array] [required]
  --token    Figma personal access token (or set FIGMA_TOKEN)           [string]
  --out      Directory to write outputs             [string] [default: "assets"]
  --scale    Scales at which to export: 2 for @2x       [array] [default: [1,2]]

Examples:
  index.js --file BESGFwgYIJRhho324d26tnHd26t --frame 3:5 --frame pins --scale
  1 2 --out public/pins

The --frame option can reference either the node ID ("3:5", found in the URL) of the frame, or its name (found in the Layers sidebar).

Guide

In Figma, arrange your assets as top-level children under one or more frames. That is, your Layers sidebar should look something like this:

# myframe
  # mycircle
  # myrectangle
# myotherframe
  # myexclamation
    - dot
    - straight bit
# other frame I don't care about
  # junk

(The top-level children under each frame don't have to themselves be frames - they can be any type.)

Get the file key from the URL. Given a URL like https://www.figma.com/file/ABC123/Untitled?node-id=0%3A1, "ABC123" is your file key.

In this scenario, you can export your assets like this:

figmasset-export --file ABC123 --frame myframe myotherframe --scale 1 2 --out assets

This will produce these files:

assets@1x/
  assets.json
  mycircle.png
  myrectangle.png
  myexclamation.png
assets@2x/
  assets.json
  mycircle.png
  myrectangle.png
  myexclamation.png

Load assets as icons into Mapbox GL JS or Maplibre GL JS

You can use the generated assets.json files to load the assets as icons into a Map* GL JS map, as follows:

async function loadAssets(map) {
    const assets = (await fetch('myicons/assets.json').then(r => r.json)).data;
    for (const asset of assets) {
        map.loadImage(`myicons/${asset.fileName}`, (error, image) => {
            this.map.addImage(asset.id, image, { pixelRatio: asset.scale })
        });
    }
}

Generate a Mapbox GL or Maplibre GL spritesheet

It is easy to combine figmasset-export with mbsprite to turn a set of icons into a spritesheet:

figmasset-export --file ABC123 --frame myframe myotherframe --frame pins --scale 1 2 --out assets
npx mbsprite bundle sprite assets@1x assets@2x