Framer Bridge is a suite of tools:
- That allows you to automatically publish and distribute components to designers with Framer and the Framer Store.
- Import in production components built by your engineers. It’s an automatic and continually synced workflow, one that is customizable to your existing development workflow.
This repository links together folder backed Framer projects with the Framer CLI and GitHub actions/CircleCI for an easy package publication flow.
- Fork this repository.
- Clone the forked repository locally
- Run
yarnto install dependencies
Inside the repository directory, you will find two key folders:
design-system: contains example production components. Typically, this design system is consumed by multiple projects.design-system.framerfx: a folder backed project that imports the components fromdesign-systemand (optionally) adds interface properties to use in Framer. This is the project that gets published to the Framer store.
From here, you can continue modifying the existing design-system.framerfx file. If you edit any of the components in design-system, they will automatically get updated in Framer too.
If you want to import your own design system, you can replace both files with your own. Make sure that your Framer project is folder backed.
- From the terminal, run:
npx framer-cli authenticate <your-framer-account-email>
- If the package has not been previously published to the store, publish the package for the first time by running
env FRAMER_TOKEN=<token> npx framer-cli publish <package-name.framerfx> --new="<Display Name>"
If you have access to the GitHub actions beta, you can use this repository to automate the deployment of your Framer package to the store without needing any external services.
-
Modify the
argsproperty in theBuildandPublishactions inside.github/main.workflowwith the path of your Framer package, eg:action "Build" { uses = "framer/bridge@master" args = ["build", <your-project-path.framerfx>] } action "Publish Filter" { needs = ["Build"] uses = "actions/bin/filter@master" args = "branch master" } action "Publish" { uses = "framer/bridge@master" args = ["publish", <your-project-path.framerfx>, "--yes"] needs = ["Build", "Publish Filter"] secrets = ["FRAMER_TOKEN"] }
-
In GitHub, navigate to the forked repository and set the
FRAMER_TOKENvia the GitHub UI for the.github/main.workflowpublish step (accessible by navigating the file structure on the homepage of the repository). -
Push a commit to the
masterbranch and watch as the GitHub actions pick up the commit, build the package, publish it to the Framer Store.
As an example of integrating framer-cli with an external CI service, there is a small CircleCI configuration included in this repository that publishes the given package to the Framer store every time a commit is made to the master branch.
To integrate with CircleCI:
-
Add the
FRAMER_TOKENenvironment variable in the CI project settings. -
Update the
.circleci/config.ymlwith your project path, e.g.:# Javascript Node CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-javascript/ for more details # version: 2 jobs: publish: docker: - image: circleci/node:10 working_directory: ~/repo steps: - checkout - run: yarn - run: npx framer-cli publish <your-project-path.framerfx> --yes workflows: version: 2 publish: jobs: - build - publish: filters: branches: only: master
-
Publish a brand new version of your package to the Framer store by pushing a commit on the
masterbranch.