figma-plugin-typescript-boilerplate
figma-plugin-typescript-boilerplate copied to clipboard
Figma plugin TypeScript boilerplate to start developing right away

Figma plugin TypeScript boilerplate to start developing right away.
Quick start
-
Get the boilerplate choosing one of these methods:
- Fork this repo.
- Execute these commands in your terminal:
mkdir my-plugin cd my-plugin npx degit https://github.com/aarongarciah/figma-plugin-typescript-boilerplate - Download the repo and extract it into your empty plugin folder.
-
Install dependencies
npm install -
Develop 😄
npm run dev
You'll need Node and npm installed to use this boilerplate. It has been tested in Node 12, 14, and 16.
Development
To develop a Figma plugin you need to install the Figma desktop app. Learn more in the Figma Plugin docs.
Available commands
Development
npm run devstarts the watcher for changes. Modify the files under thesrcfolder and the code will be compiled automatically. Then, go to the Figma app and run your development plugin.
Production build
npm run buildgenerates the production build in thedistfolder. Important: run this command before releaseing a new version of your plugin. Before generating the build, it checks TypeScript, JavaScript and CSS files for linting errors.
Test
npm run testruns tests via Jest. This script runs beforebuild.npm run test:watchruns tests via Jest in watch mode.
Lint
npm run lintlint TypeScript and JavaScript files with ESLint and CSS with Stylelint.npm run lint:fixlint and apply automatic fixes to TypeScript, JavaScript and CSS files. This script runs beforebuild.
What this boilerplate does for me?
It's highly recommended to take a look at the Figma plugin development docs before developing a plugin.
A plugin has two parts: a mandatory worker file (a JavaScript file which has access to the Figma document) and an optional UI (an HTML file).
- Compiles TypeScript.
- Inlines JS and CSS code into the HTML for the UI. That's because the Figma plugin UI must be a unique HTML file and can't reference any other assets like CSS or JS with relative paths. You can load any external asset (e.g. a file hosted in a CDN) but not relative paths.
- Provides setup and config for: TypeScript, webpack, ESLint, Stylelint, Prettier, Jest, EditorConfig, etc.
- Lints and formats the code in a pre-commit hook.
- Provides boilerplate to send messages between the worker and the UI.
- Contains a helper to close the UI if you hit the ESC key outside of an input.
- Testing environment configured with Jest. Every test file under a
__tests__folder or ending with.spec.*or.test.*will be picked up by Jest. - Contains a GitHub action to run the
buildandtestcommands.
Having problems?
Take a look if someone already opened a similar issue or open a new one.
Roadmap
- [ ] Add FAQ to README.
- [ ] Add bin executables to create templates via
npx.
License
MIT
Made with ♥️ by Aarón García Hervás