This PR removes deprecated code that's been slated for removal in Nx 19 - mentioned as `TODO(v19)` comments. ## Breaking Changes - **CNW:** `create-nx-workspace` no longer support `--preset=empty` and `--preset=core`, use `--preset=apps` and `--preset=npm` respectively. Deprecated in Nx 15.9. - **Next.js:** `NX_` environment variables are no longer bundled into Next.js apps, use `NEXT_PUBLIC` instead. Deprecated in Nx 16.8. - **Webpack, Storybook, Esbuild:** `NX_` environment variables are no longer bundled into browser bundles, use `NX_PUBLIC` instead. This removes the possibility of intentional bundling of `NX_` variables. Deprecated in Nx 18. - **Cypress:** `cypressComponentConfiguration` generator removed from `@nx/cypress`, use `configurationGenerator`instead. Deprecated in Nx 16.8. - **Cypress:** `cypressProjectGenerator` generator removed from `@nx/cypress`, use `configurationGenerator` instead. Deprecated in Nx 15.9. - **Expo:** `withNxWebpack` removed from `@nx/expo`, use [metro bundler](https://docs.expo.dev/guides/customizing-metro/) (https://docs.expo.dev/guides/customizing-metro/) in app.json instead. There is a migration to handle this in Nx 19. Deprecated in Nx 15.8. ## Deferred to v20 - **JS:** `classProperties.loose` option removed from `@nx/js/babel` preset, use `loose` instead. Deprecated in Nx 17.0. - **ESLint:** Low priority task to "deviations from @typescript-eslint/recommended" for our lint rules. @JamesHenry will look at this later before Nx 20, but it is unimportant. - **React:** component testing does not work with Project Crystal, and we need the executor + built-in webpack configs to run CT. Will do a follow-up on this after Nx 19 release. Related issue: https://github.com/nrwl/nx/issues/21546 - **Next.js:** `withStylus` removal from `@nx/next`, use SASS instead. It hasn't worked, but we kept the file to throw an error when used. Deprecated in Nx 17.0. - **Next.js**: `@nx/next:component` and `@nx/next:page` generators to not derive the `components` and `app`/`pages` directory. Use `nx g @nx/next:component apps/myapp/components/button` instead. Deprecated in Nx 17.0. - **Webpack:** `isolatedConfig` option removal from `@nx/webpack:webpack` executor. There is a migration to handle this in Nx 19. Deprecated in in Nx 17.2. - **Angular:** `executeWebpackDevServerBuilder` removal from `@nx/angular/executors`, use `executeDevServerBuilder` instead. Deprecated in Nx 17.0.
31 lines
953 B
TypeScript
31 lines
953 B
TypeScript
export function getClientEnvironment(mode?: string) {
|
|
// Grab NODE_ENV and NX_PUBLIC_* environment variables and prepare them to be
|
|
// injected into the application via DefinePlugin in webpack configuration.
|
|
const nxPublicKeyRegex = /^NX_PUBLIC_/i;
|
|
|
|
const raw = Object.keys(process.env)
|
|
.filter((key) => nxPublicKeyRegex.test(key))
|
|
.reduce(
|
|
(env, key) => {
|
|
env[key] = process.env[key];
|
|
return env;
|
|
},
|
|
// If mode is undefined or is dev or prod then webpack already defines this variable for us.
|
|
!mode || mode === 'development' || mode === 'production'
|
|
? {}
|
|
: {
|
|
NODE_ENV: process.env.NODE_ENV,
|
|
}
|
|
);
|
|
|
|
// Stringify all values so we can feed into webpack DefinePlugin
|
|
const stringified = {
|
|
'process.env': Object.keys(raw).reduce((env, key) => {
|
|
env[key] = JSON.stringify(raw[key]);
|
|
return env;
|
|
}, {}),
|
|
};
|
|
|
|
return { stringified };
|
|
}
|