Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/typed-macro/typed-macro
🤠 Brings macros to your projects.
https://github.com/typed-macro/typed-macro
babel javascript macro typescript vite-plugin
Last synced: 1 day ago
JSON representation
🤠 Brings macros to your projects.
- Host: GitHub
- URL: https://github.com/typed-macro/typed-macro
- Owner: typed-macro
- License: mit
- Created: 2021-08-10T12:16:02.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2022-04-14T09:23:38.000Z (over 2 years ago)
- Last Synced: 2024-10-30T16:29:45.664Z (6 days ago)
- Topics: babel, javascript, macro, typescript, vite-plugin
- Language: TypeScript
- Homepage:
- Size: 771 KB
- Stars: 143
- Watchers: 4
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
🤠 Provide macros to your projects.## 🧐 Why @typed-macro
There are already many solutions that provide macro capabilities
for Javascript and Typescript projects.
Some of them are very mature, such as [babel-plugin-macros](https://github.com/kentcdodds/babel-plugin-macros)
(it's awesome, and maybe you will be interested in it).However, according to my personal experience, they are not suitable for people like me - all my projects are in Typescript, but their support for
Typescript is usually [not so good](https://github.com/kentcdodds/babel-plugin-macros/issues/94).Also, in those solutions, macros cannot interact with each other,
such as [importing](https://github.com/kentcdodds/babel-plugin-macros/issues/48)
or [nesting](https://github.com/kentcdodds/babel-plugin-macros/issues/173).
And users cannot import macros [like normal functions](https://github.com/kentcdodds/babel-plugin-macros/issues/111).Most of them are Babel plugins, so they may read something that
has been changed by other plugins but not updated yet (like [bindings](https://github.com/kentcdodds/import-all.macro/issues/7)),
and can't control [its position](https://jamie.build/babel-plugin-ordering.html) in the transformation chain.
But in the modern dev flow, the main pain point of being a Babel plugin may be that
Babel is just a transformer, knowing nothing about modules and dependency graph, which means
they [cannot re-expand macros](https://github.com/kentcdodds/babel-plugin-preval/issues/19) when changes occurs in dependent external conditions.😎 **@typed-macro** stands on the shoulders of **Typescript** and **ES Module** - **none of the above problems exist anymore**.
## 📈 Road Map
| Package | Status | Documentation |
| ----------------------- | ---------------------------------------------- | ------------------------------------------ |
| @typed-macro/core | [![core][core-icon]][core-url] | [English](packages/core/README.md) |
| @typed-macro/runtime | [![runtime][runtime-icon]][runtime-url] | - |
| @typed-macro/test-utils | [![core][test-utils-icon]][test-utils-url] | [English](packages/test-utils/README.md) |
| vite-plugin-macro | [![core][wrapper-vite-icon]][wrapper-vite-url] | [English](packages/wrapper-vite/README.md) |
| \*rollup | 🚧 | 🚧 |
| \*webpack | 🚧 | 🚧 |[core-icon]: https://img.shields.io/npm/v/@typed-macro/core
[core-url]: https://www.npmjs.com/package/@typed-macro/core
[runtime-icon]: https://img.shields.io/npm/v/@typed-macro/runtime
[runtime-url]: https://www.npmjs.com/package/@typed-macro/runtime
[test-utils-icon]: https://img.shields.io/npm/v/@typed-macro/test-utils
[test-utils-url]: https://www.npmjs.com/package/@typed-macro/test-utils
[wrapper-vite-icon]: https://img.shields.io/npm/v/vite-plugin-macro
[wrapper-vite-url]: https://www.npmjs.com/package/vite-plugin-macro