rsnext/examples/with-universal-configuration-build-time
Shu Uesugi 6804039e94 Make example READMEs more consistent (#10124)
* npx create → npm init

* Fix inconsistent instructions

* Update amp-first

* Update with-graphql-react

* with-firebase-cloud-messaging

* Update with-higher-order-component

* change create-next-app url

* Update create-next-app instruction

* Update instructions to use npm instead of npx

* Move "the idea behind the example" to top

* Rename

* Rename

* Update contributing.md with a README template
2020-01-16 23:23:56 +01:00
..
pages form handler example: Update deps and fix build from dep update (#6732) 2019-03-27 16:12:45 -04:00
.env Updated examples for build-time env configuration for v8 (#6237) 2019-02-11 14:15:06 +01:00
next.config.js Improve linting rules to catch more errors (#9374) 2019-11-10 19:24:53 -08:00
package.json Updated examples for build-time env configuration for v8 (#6237) 2019-02-11 14:15:06 +01:00
README.md Make example READMEs more consistent (#10124) 2020-01-16 23:23:56 +01:00

With universal configuration

This example shows how to use environment variables and customize one based on NODE_ENV for your application using dotenv, a .env-file and next.config.js.

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.

Deploy your own

Deploy the example using ZEIT Now:

Deploy with ZEIT Now

How to use

Using create-next-app

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

npm init 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

Please note

  • It is a bad practice to commit env vars to a repository. Thats why you should normally gitignore your .env file.
  • Any env var you expose in next.config.js will be publicly available and exposed to the client.
  • 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 the example with-universal-configuration-runtime.
  • If you have many variables in .env and want to expose them without listing them all in next.config.js, see the example with-dotenv. That example automatically exposes any variable that has been referenced in code, but keeps all other variables secret.