# motion-canvas **Repository Path**: markhoo/motion-canvas ## Basic Information - **Project Name**: motion-canvas - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: alpha - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-04 - **Last Updated**: 2025-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Motion Canvas logo

published with lerna powered by vite npm package version discord


# Motion Canvas Motion Canvas is two things: - A TypeScript library that uses generators to program animations. - An editor providing a real-time preview of said animations. It's a specialized tool designed to create informative vector animations and synchronize them with voice-overs. Aside from providing the preview, the editor allows you to edit certain aspects of the animation which could otherwise be tedious. ## Using Motion Canvas Check out our [getting started][docs] guide to learn how to use Motion Canvas. ## Developing Motion Canvas locally The project is maintained as one monorepo containing the following packages: | Name | Description | | ------------- | -------------------------------------------------------------- | | `2d` | The default renderer for 2D motion graphics | | `core` | All logic related to running and rendering animations. | | `create` | A package for bootstrapping new projects. | | `docs` | [Our documentation website.][docs] | | `e2e` | End-to-end tests. | | `examples` | Animation examples used in documentation. | | `internal` | Internal helpers used for building the packages. | | `player` | A custom element for displaying animations in a browser. | | `template` | A template project included for developer's convenience. | | `ui` | The user interface used for editing. | | `vite-plugin` | A plugin for Vite used for developing and bundling animations. | After cloning the repo, run `npm install` in the root of the project to install all necessary dependencies. Then run `npx lerna run build` to build all the packages. ### Developing Editor When developing the editor, run the following command: ```bash npm run template:dev ``` It will start a vite server that watches the `core`, `2d`, `ui`, and `vite-plugin` packages. The `template` package itself contains a simple Motion Canvas project that can be used during development. ### Developing Player To develop the player, first build the template: `npm run template:build`. Then, start `npm run player:dev`. ## Installing a local version of Motion Canvas in a project It can be useful to install a local version of Motion Canvas in a standalone project. For example, when you want to use your own fork with some custom-made features to create your animations. Let's assume the following project structure: ``` projects/ ├── motion-canvas/ <- your local monorepo └── my-project/ <- a bootstrapped project └── package.json ``` You can link the local packages from the monorepo by updating the `package.json` of your project. Simply replace the version with a `file:` followed by a relative path to the package you want to link: ```diff "dependencies": { - "@motion-canvas/core": "^3.11.0", + "@motion-canvas/core": "file:../motion-canvas/packages/core", // ... }, ``` If you're linking the `ui` package, you'll also need to modify `vite.config.ts` to allow vite to load external files: ```ts import {defineConfig} from 'vite'; import motionCanvas from '@motion-canvas/vite-plugin'; export default defineConfig({ server: { fs: { // let it load external files strict: false, }, }, plugins: [motionCanvas()], }); ``` This is necessary because the editor styles are loaded using the `/@fs/` prefix and since the linked `ui` package is outside the project, vite needs permission to access it. Then run `npm install` in to apply the changes and that's it. You can use the same technique to test out any custom package you're working on. ## Contributing Read through our [Contribution Guide](./CONTRIBUTING.md) to learn how you can help make Motion Canvas better. [authenticate]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#authenticating-with-a-personal-access-token [template]: https://github.com/motion-canvas/project-template#using-the-template [discord]: https://chat.motioncanvas.io [docs]: https://motioncanvas.io/docs/quickstart