rsnext/examples/with-universal-configuration-build-time
Juan Olvera 7e12997af6 Test updater script on examples folder (#5993)
I wrote a [script](https://github.com/j0lv3r4/dependency-version-updater) to update dependencies recursively in `package.json` files, e.g.:

```
$ node index.js --path="./examples" --dependencies="react=^16.7.0,react-dom=^16.7.0"
```

This PR contains the result against the examples folder.
2019-01-05 12:19:27 +01:00
..
pages Modify with-universal-configuration example (#4498) (#5948) 2018-12-26 20:19:31 +01:00
.babelrc.js Modify with-universal-configuration example (#4498) (#5948) 2018-12-26 20:19:31 +01:00
env-config.js Modify with-universal-configuration example (#4498) (#5948) 2018-12-26 20:19:31 +01:00
package.json Test updater script on examples folder (#5993) 2019-01-05 12:19:27 +01:00
README.md Modify with-universal-configuration example (#4498) (#5948) 2018-12-26 20:19:31 +01:00

Deploy to now

With universal configuration

How to use

Using create-next-app

Execute create-next-app with Yarn or npx to bootstrap the example:

npx create-next-app --example with-universal-configuration-build-time with-universal-configuration-build-time-app
# or
yarn create next-app --example with-universal-configuration-build-time with-universal-configuration-build-time-app

Download manually

Download the example:

curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-universal-configuration-build-time
cd with-universal-configuration-build-time

Install it and run:

npm install
VARIABLE_EXAMPLE=next.js npm run dev
# or
yarn
VARIABLE_EXAMPLE=next.js yarn dev

Deploy it to the cloud with now (download)

now

The idea behind the example

This example shows how to use environment variables and customize one based on NODE_ENV for your application using transform-define

When you build your application the environment variable is transformed into a primitive (string or undefined) and can only be changed with a new build. This happens for both client-side and server-side. If the environment variable is used directly in your application it will only have an effect on the server side, not the client side.

To set the environment variables in runtime you can follow the example with-universal-configuration-runtime

Caveats

  • Because a babel plugin is used the output is cached in node_modules/.cache by babel-loader. When modifying the configuration you will have to manually clear this cache to make changes visible. Alternately, you may skip caching for babel-loader as shown here.
  • This example sets the environment configuration at build time, meaning the same build might not be used in e.g. both staging and production. For a solution which sets the environment at runtime, see here.