mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
75efa817c0
Explains in details how the "with-universal-configuration" example works and rename it to "with-universal-configuration-build-time". Changing the example name makes the purpose of the example clear. The "env-config.js" file introduce one more sample of variable usage that instantiates an immediate value of the local environment variable. This makes it even clearer how build-time variable configuration works. The "index.js" page makes explicit the use of these configured environment variables. The universal configuration confusion happens when the value of the environment variable is used directly in the application causing an effect in server-side but not on the client side.
2.6 KiB
2.6 KiB
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
bybabel-loader
. When modifying the configuration you will have to manually clear this cache to make changes visible. Alternately, you may skip caching forbabel-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.