<!--
title: externalize configuration values
domain: devtools
topic: Configurations
language: JavaScript
source: nrwl/nx
updated: 2025-10-07
url: https://awesomereviewers.com/reviewers/nx-externalize-configuration-values/
-->

Configuration values should be externalized from code and read from standard locations like package.json or environment variables. Implement environment-aware validation that fails fast in production when required configuration is missing, while providing sensible defaults for development environments.

For environment variables, validate required values at application startup:

```javascript
if (!process.env.NEXT_PUBLIC_ASTRO_URL) {
  // If we're building for production throw error as each env must set this value.
  if (process.env.NODE_ENV === 'production') {
    throw new Error(
      `The NEXT_PUBLIC_ASTRO_URL environment variable is not set. Please set it to the URL of the Astro site.`
    );
  }
  // For dev, default to the canary docs.
  else {
    process.env.NEXT_PUBLIC_ASTRO_URL = 'https://master--nx-docs.netlify.app';
  }
}
```

For scripts, read configuration from package.json or config files rather than hardcoding values. This ensures configuration is centralized, version-controlled, and easily maintainable across different environments and deployment scenarios.
