unified processor with support for parsing Lottie input and serializing Lottie as output
npm install @lottiefiles/relottie[unified][] processor with support for parsing Lottie input and serializing Lottie as output
* What is this?
* When should I use this?
* Install
* API
* Examples
* Types
* Compatibility
* Security
* Contribute
* Start
* Legal
This package is a [unified][] processor with support for parsing Lottie input
and serializing Lottie as output by using unified with
[relottie-parse][relottie-parse] and [relottie-stringify][relottie-stringify].
unified is a project that transforms content with abstract syntax trees
(ASTs).
relottie adds support for Lottie to unified.
last is the Lottie AST that relottie uses.
Please see [the monorepo readme][relottie] for what the relottie ecosystem is.
You can use this package when you want to use unified, have Lottie as input,
and want Lottie as output.
This package is a shortcut forunified().use(relottieParse).use(relottieStringify).
When the input isn’t Lottie (meaning you don’t need relottie-parse) or the
output is not Lottie (you don’t need relottie-stringify), it’s recommended to
use unified directly.
When you want to inspect and format Lottie files in a project on the command
line, you can use [relottie-cli][relottie-cli].
This package is ESM only.
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
``sh`
yarn add @lottiefiles/relottie
This package exports the following identifier: relottie.
There is no default export.
Create a new (unfrozen) unified processor that already uses relottie-parse and relottie-stringify and you can add more plugins to.unified
See [][unified] for more information.
When you use relottie-parse and relottie-stringify manually you can passuse
options to .relottie
Because these are already used in , that’s not possible.data
To define options for them, you can instead pass options to :
`ts
import {
relottie,
type Options,
type FileData
} from '@lottiefiles/relottie';
const lottie = '{ "v": "6.0.0" }';
const options: Options = {
parse: {
position: false,
phantomRoot: {
type: 'object',
title: 'animated-color',
children: [],
},
},
};
const processor = relottie().data('settings', options);
const tree = processor.parse(lottie);
const output = processor.stringify(tree);
`
tree:
`javascript`
{
"type": "root",
"title": "animation",
"hasExpressions": false
"children": [
{
"type": "attribute",
"key": "v",
"title": "version",
"children": [{ "type": "primitive", "value": "6.0.0", "valueType": "string" }]
}
]
}
output:
`javascript`
{"v":"6.0.0"}
processor.parse now returns a [NodeValue][last], so when you parse a complete animation you still get the root, but fragment parsing with a phantomRoot returns whichever node you targeted.
The synthetic parent only provides context for titles/slots and is not emitted in the resulting tree.
This package is fully typed with [TypeScript][].
There are no extra exported types.
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
As last properties can have expressions, and improper use of [last][] is also unsafe. Always be
careful with user input.
By interacting with this repository, organisation, or community you agree to
abide by its terms.
1. pnpm installpnpm ts-node playground.ts
2. for testing playground environment (if you are in the root folder you have to enter the package directory cd packages/relottie)pnpm test`
3. for testing
License © [LottieFiles][lottiefiles]
[lottiefiles]: https://github.com/LottieFiles
[relottie]: https://github.com/LottieFiles/relottie
[relottie-parse]: https://github.com/LottieFiles/relottie/tree/main/packages/relottie-parse
[relottie-stringify]: https://github.com/LottieFiles/relottie/tree/main/packages/relottie-stringify
[relottie-cli]: https://github.com/LottieFiles/relottie/tree/main/packages/relottie-cli
[last]: https://github.com/LottieFiles/relottie/tree/main/packages/last
[lottie-docs]: https://lottiefiles.github.io/lottie-docs/
[npm]: https://docs.npmjs.com/cli/install
[unified]: https://github.com/unifiedjs/unified
[processor]: https://github.com/unifiedjs/unified#processor
[typescript]: https://www.typescriptlang.org