Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mimshins/figma-backup

FigmaBackup is a Node.js CLI to backup Figma files and store them as local .fig files.
https://github.com/mimshins/figma-backup

bot cli figma nodejs puppeteer typescript

Last synced: 3 months ago
JSON representation

FigmaBackup is a Node.js CLI to backup Figma files and store them as local .fig files.

Awesome Lists containing this project

README

        


Figma Backup Bot


A Node.js CLI to backup Figma files and store them as local .fig files.







**NOTE**: _This repository is no longer supported or updated by me due to constant changes in Figma and lack of time, resource, and contribution to the project.
If you wish to continue to develop this code yourself, we recommend you fork it. And if you are looking for another solution I recommend [Magicul](https://magicul.io/figma-design-backup)!_


## Installation

1- Make sure you have [Node.js](https://nodejs.org) installed on your machine.\
(We follow the latest [maintenance LTS](https://github.com/nodejs/Release#release-schedule) version of Node.)

2- Run the following command on your terminal:
```bash
npm install -g figma-backup
```

or install it via [Yarn](https://yarnpkg.com/):

```bash
yarn global add figma-backup
```

It is going to download and install the node package and a recent compatible version of Chromium in your global `node_modules` directory (You can find it via `npm list -g | head -1`).

**Note:** If the installation stopped with the 403 Error (Forbidden), you'll have to use a VPN or Proxy to another region/country in order to access the Chromium source.

---

**Note (Linux Machines):** Make sure all the necessary dependencies are installed. You can go to the `/node_modules/puppeteer/.local-chromium/linux-******/chrome-linux` and run `ldd chrome | grep not` on a Linux machine to check which dependencies are missing. The common ones are provided below.

Debian (e.g. Ubuntu) Dependencies

```
ca-certificates
fonts-liberation
libappindicator3-1
libasound2
libatk-bridge2.0-0
libatk1.0-0
libc6
libcairo2
libcups2
libdbus-1-3
libexpat1
libfontconfig1
libgbm1
libgcc1
libglib2.0-0
libgtk-3-0
libnspr4
libnss3
libpango-1.0-0
libpangocairo-1.0-0
libstdc++6
libx11-6
libx11-xcb1
libxcb1
libxcomposite1
libxcursor1
libxdamage1
libxext6
libxfixes3
libxi6
libxrandr2
libxrender1
libxss1
libxtst6
lsb-release
wget
xdg-utils
```

CentOS Dependencies

```
alsa-lib.x86_64
atk.x86_64
cups-libs.x86_64
gtk3.x86_64
ipa-gothic-fonts
libXcomposite.x86_64
libXcursor.x86_64
libXdamage.x86_64
libXext.x86_64
libXi.x86_64
libXrandr.x86_64
libXScrnSaver.x86_64
libXtst.x86_64
pango.x86_64
xorg-x11-fonts-100dpi
xorg-x11-fonts-75dpi
xorg-x11-fonts-cyrillic
xorg-x11-fonts-misc
xorg-x11-fonts-Type1
xorg-x11-utils
```

After installing dependencies you need to update nss library using this command

```bash
yum update nss -y
```

### Docker Container
You can also use docker container and run the `figma-backup` command in it.

Usage

Building image:

```bash
docker build -t -f Dockerfile .
```
Running the container:
```bash
docker run --name -it bash
```
**Note:**

If you face the following error:
```bash
Error: Failed to launch the browser process!
[19:19:0914/132053.471715:ERROR:browser_main_loop.cc(1409)] Unable to open X display.

TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md

at onClose (/usr/local/lib/node_modules/figma-backup/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:203:20)
at ChildProcess. (/usr/local/lib/node_modules/figma-backup/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:194:79)
at ChildProcess.emit (node:events:525:35)
at ChildProcess._handle.onexit (node:internal/child_process:291:12)
```
You can follow [this](https://stackoverflow.com/questions/60304251/unable-to-open-x-display-when-trying-to-run-google-chrome-on-centos-rhel-7-5/61043049#61043049) and set the screen to something like:
```bash
Xvfb -ac :99 -screen 0 1280x1024x16 &
export DISPLAY=:99
```

---

## Usage

To use the interactive command-line interface, run:

```bash
figma-backup-interactive
```

To use the noninteractive version, run:

```bash
figma-backup -e "" -p "" -t "" --projects-ids "ID1" "ID2" ... "IDx"
```

For more information about the noninteractive cli options run:

```bash
figma-backup --help
```
---

> **To get `project_id` from project page's URL:**\
`https://www.figma.com/files/project/{project_id}/{project_name}`

> **To get `access_token`:**
> 1. Login to your Figma account.
> 2. Head to the account settings from the top-left menu inside Figma.
> 3. Find the personal access tokens section.
> 4. Click Create new token.
> 5. A token will be generated. This will be your only chance to copy the token, so make sure you keep a copy of this in a secure place.

---

## Output

The backup files will be found in `figma-backup-root` directory relative to the working directory which you ran the `figma-backup` command.

### Structure of `figma-backup-root`:
```
figma-backup-root/
├── cookies.json
└── backups/
└── [ISOStringifiedDate]/
//i.e "2022-09-16T18:14:10.708Z"
├── Project1/
│ ├── File1.fig
│ └── File2.fig
└── Project2/
├── File1.fig
└── File2.fig
```