2017-07-14 21:22:25 +00:00
[![Deploy to now ](https://deploy.now.sh/static/button.svg )](https://deploy.now.sh/?repo=https://github.com/zeit/next.js/tree/master/examples/with-babel-macros)
# Example app with [babel-macros](https://github.com/kentcdodds/babel-macros)
## How to use
2017-12-03 04:30:17 +00:00
### Using `create-next-app`
2018-04-03 12:19:05 +00:00
Execute [`create-next-app` ](https://github.com/segmentio/create-next-app ) with [Yarn ](https://yarnpkg.com/lang/en/docs/cli/create/ ) or [npx ](https://github.com/zkat/npx#readme ) to bootstrap the example:
2017-12-03 04:30:17 +00:00
2018-03-14 08:09:46 +00:00
```bash
npx create-next-app --example with-babel-macros with-babel-macros-app
# or
yarn create next-app --example with-babel-macros with-babel-macros-app
2017-12-03 04:30:17 +00:00
```
### Download manually
2018-07-11 21:56:15 +00:00
Download the example:
2017-07-14 21:22:25 +00:00
```bash
2017-12-07 02:12:42 +00:00
curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-babel-macros
2017-07-14 21:22:25 +00:00
cd with-babel-macros
```
Install it and run:
```bash
npm install
npm run dev
2018-04-03 12:19:05 +00:00
# or
yarn
yarn dev
2017-07-14 21:22:25 +00:00
```
Deploy it to the cloud with [now ](https://zeit.co/now ) ([download](https://zeit.co/download))
```bash
now
```
## The idea behind the example
This example features how to configure and use [`babel-macros` ](https://github.com/kentcdodds/babel-macros ) which allows you
to easily add babel plugins which export themselves as a macro without needing
to configure them.
You'll notice the configuration in `.babelrc` includes the `babel-macros`
plugin, then we can use the `preval.macro` in `pages/index.js` to pre-evaluate
code at build-time. `preval.macro` is effectively transforming our code, but
we didn't have to configure it to make that happen!
Specifically what we're doing is we're prevaling the username of the user who
ran the build.