https://github.com/unplugin/unplugin-macros
Macros plugin for bundlers.
https://github.com/unplugin/unplugin-macros
Last synced: 6 days ago
JSON representation
Macros plugin for bundlers.
- Host: GitHub
- URL: https://github.com/unplugin/unplugin-macros
- Owner: unplugin
- License: mit
- Created: 2023-06-01T14:59:57.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-16T07:50:11.000Z (10 days ago)
- Last Synced: 2025-06-16T08:48:59.915Z (10 days ago)
- Language: TypeScript
- Homepage: https://jsr.io/@unplugin/macros
- Size: 1.3 MB
- Stars: 201
- Watchers: 2
- Forks: 4
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# unplugin-macros [](https://npmjs.com/package/unplugin-macros) [](https://jsr.io/@unplugin/macros)
[](https://github.com/unplugin/unplugin-macros/actions/workflows/unit-test.yml)
> Macros are a mechanism for running JavaScript functions at bundle-time.
> The value returned from these functions or variables are directly inlined into your bundle.## Installation
```bash
# npm
npm i -D unplugin-macros# jsr
npx jsr add -D @unplugin/macros
```Vite
```ts
// vite.config.ts
import Macros from 'unplugin-macros/vite'export default defineConfig({
plugins: [Macros()],
})
```
Rollup
```ts
// rollup.config.js
import Macros from 'unplugin-macros/rollup'export default {
plugins: [Macros()],
}
```
esbuild
Requires esbuild >= 0.15
```ts
// esbuild.config.js
import { build } from 'esbuild'build({
plugins: [require('unplugin-macros/esbuild')()],
})
```
Webpack
```ts
// webpack.config.js
module.exports = {
/* ... */
plugins: [require('unplugin-macros/webpack')()],
}
```
## Usage
```js
// main.js
import { buildTime, getRandom } from './macros' with { type: 'macro' }getRandom() // Will be replaced with a random number at build time
buildTime // Will be replaced with the timestamp at the build time
``````js
// macros.js
export function getRandom() {
return Math.random()
}
export const buildTime = Date.now()
```See more in [Bun Macros](https://bun.sh/blog/bun-macros).
### TypeScript
Import Attributes syntax is supported in TypeScript 5.3 and above.
However, you can use `assert` keyword instead of `with`, which is supported in TypeScript 4.5 and above.### ESLint
Import Attributes syntax is supported in ESLint v9.14.0.
## Options
Refer to [docs](https://jsr.io/@unplugin/macros/doc/api/~/Options).
## Thanks
Thanks to [Bun Macros](https://bun.sh/blog/bun-macros).
## Sponsors
## License
[MIT](./LICENSE) License © 2023-PRESENT [三咲智子](https://github.com/sxzz)