## Current Behavior We currently have no support for React 19, generating only React 18 applications. ## Expected Behavior Add utils to determine what version of React is installed in the workspace. If React 18 is the main version of react installed, continue to generate React 18 projects. If React 19 is the main version of react installed, generate React 19 projects. If no React version is installed or can be determined, generate React 19 projects.
198 lines
7.6 KiB
JSON
198 lines
7.6 KiB
JSON
{
|
|
"name": "application",
|
|
"factory": "./src/generators/application/application#applicationGeneratorInternal",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/schema",
|
|
"cli": "nx",
|
|
"$id": "NxReactApp",
|
|
"title": "Create a React Application",
|
|
"description": "Create a React application for Nx.",
|
|
"examples": [
|
|
{
|
|
"command": "nx g app apps/myorg/myapp",
|
|
"description": "Generate `apps/myorg/myapp` and `apps/myorg/myapp-e2e`"
|
|
},
|
|
{
|
|
"command": "nx g app apps/myapp --classComponent",
|
|
"description": "Use class components instead of functional components"
|
|
},
|
|
{
|
|
"command": "nx g app apps/myapp --routing",
|
|
"description": "Set up React Router"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"directory": {
|
|
"description": "The directory of the new application.",
|
|
"type": "string",
|
|
"alias": "dir",
|
|
"$default": { "$source": "argv", "index": 0 },
|
|
"x-prompt": "Which directory do you want to create the application in?"
|
|
},
|
|
"name": {
|
|
"description": "The name of the application.",
|
|
"type": "string",
|
|
"pattern": "^[a-zA-Z][^:]*$",
|
|
"x-priority": "important"
|
|
},
|
|
"style": {
|
|
"description": "The file extension to be used for style files.",
|
|
"type": "string",
|
|
"default": "css",
|
|
"alias": "s",
|
|
"x-prompt": {
|
|
"message": "Which stylesheet format would you like to use?",
|
|
"type": "list",
|
|
"items": [
|
|
{ "value": "css", "label": "CSS" },
|
|
{
|
|
"value": "scss",
|
|
"label": "SASS(.scss) [ https://sass-lang.com ]"
|
|
},
|
|
{
|
|
"value": "less",
|
|
"label": "LESS [ https://lesscss.org ]"
|
|
},
|
|
{
|
|
"value": "tailwind",
|
|
"label": "tailwind [ https://tailwindcss.com/ ]"
|
|
},
|
|
{
|
|
"value": "styled-components",
|
|
"label": "styled-components [ https://styled-components.com ]"
|
|
},
|
|
{
|
|
"value": "@emotion/styled",
|
|
"label": "emotion [ https://emotion.sh ]"
|
|
},
|
|
{
|
|
"value": "styled-jsx",
|
|
"label": "styled-jsx [ https://www.npmjs.com/package/styled-jsx ]"
|
|
},
|
|
{ "value": "none", "label": "None" }
|
|
]
|
|
}
|
|
},
|
|
"routing": {
|
|
"type": "boolean",
|
|
"description": "Generate application with routes.",
|
|
"x-prompt": "Would you like to add React Router to this application?",
|
|
"default": false
|
|
},
|
|
"skipFormat": {
|
|
"description": "Skip formatting files.",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"x-priority": "internal"
|
|
},
|
|
"skipNxJson": {
|
|
"description": "Skip updating `nx.json` with default options based on values provided to this app.",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"x-priority": "internal"
|
|
},
|
|
"bundler": {
|
|
"description": "The bundler to use.",
|
|
"type": "string",
|
|
"enum": ["vite", "rsbuild", "rspack", "webpack"],
|
|
"x-prompt": "Which bundler do you want to use to build the application?",
|
|
"default": "vite",
|
|
"x-priority": "important"
|
|
},
|
|
"linter": {
|
|
"description": "The tool to use for running lint checks.",
|
|
"type": "string",
|
|
"enum": ["eslint", "none"],
|
|
"default": "none",
|
|
"x-prompt": "Which linter would you like to use?",
|
|
"x-priority": "important"
|
|
},
|
|
"unitTestRunner": {
|
|
"type": "string",
|
|
"enum": ["vitest", "jest", "none"],
|
|
"description": "Test runner to use for unit tests.",
|
|
"default": "none",
|
|
"x-prompt": "What unit test runner should be used?",
|
|
"x-priority": "important"
|
|
},
|
|
"inSourceTests": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "When using Vitest, separate spec files will not be generated and instead will be included within the source files. Read more on the Vitest docs site: https://vitest.dev/guide/in-source.html"
|
|
},
|
|
"e2eTestRunner": {
|
|
"type": "string",
|
|
"enum": ["playwright", "cypress", "none"],
|
|
"description": "Test runner to use for end to end (E2E) tests.",
|
|
"x-prompt": "Which E2E test runner would you like to use?",
|
|
"default": "playwright"
|
|
},
|
|
"tags": {
|
|
"type": "string",
|
|
"description": "Add tags to the application (used for linting).",
|
|
"alias": "t"
|
|
},
|
|
"classComponent": {
|
|
"type": "boolean",
|
|
"description": "Use class components instead of functional component.",
|
|
"alias": "C",
|
|
"default": false
|
|
},
|
|
"js": {
|
|
"type": "boolean",
|
|
"description": "Generate JavaScript files rather than TypeScript files.",
|
|
"default": false
|
|
},
|
|
"globalCss": {
|
|
"type": "boolean",
|
|
"description": "Default is `false`. When `true`, the component is generated with `*.css`/`*.scss` instead of `*.module.css`/`*.module.scss`.",
|
|
"default": false
|
|
},
|
|
"strict": {
|
|
"type": "boolean",
|
|
"description": "Creates an application with strict mode and strict type checking.",
|
|
"default": true
|
|
},
|
|
"setParserOptionsProject": {
|
|
"type": "boolean",
|
|
"description": "Whether or not to configure the ESLint `parserOptions.project` option. We do not do this by default for lint performance reasons.",
|
|
"default": false
|
|
},
|
|
"compiler": {
|
|
"type": "string",
|
|
"description": "The compiler to use.",
|
|
"enum": ["babel", "swc"],
|
|
"default": "babel"
|
|
},
|
|
"skipPackageJson": {
|
|
"description": "Do not add dependencies to `package.json`.",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"x-priority": "internal"
|
|
},
|
|
"rootProject": {
|
|
"description": "Create a application at the root of the workspace",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"hidden": true
|
|
},
|
|
"minimal": {
|
|
"description": "Generate a React app with a minimal setup, no separate test files.",
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
},
|
|
"required": ["directory"],
|
|
"examplesFile": "## Examples\n\n{% tabs %}\n{% tab label=\"Simple Application\" %}\n\nCreate an application named `my-app`:\n\n```bash\nnx g @nx/react:application apps/my-app\n```\n\n{% /tab %}\n\n{% tab label=\"Application using Vite as bundler\" %}\n\nCreate an application named `my-app`:\n\n```bash\nnx g @nx/react:app apps/my-app --bundler=vite\n```\n\nWhen choosing `vite` as the bundler, your unit tests will be set up with `vitest`, unless you choose `none` for `unitTestRunner`.\n\n{% /tab %}\n\n{% tab label=\"Specify style extension\" %}\n\nCreate an application named `my-app` in the `my-dir` directory and use `scss` for styles:\n\n```bash\nnx g @nx/react:app apps/my-dir/my-app --style=scss\n```\n\n{% /tab %}\n\n{% tab label=\"Add tags\" %}\n\nAdd tags to the application (used for linting).\n\n```bash\nnx g @nx/react:app apps/my-app --tags=scope:admin,type:ui\n```\n\n{% /tab %}\n{% /tabs %}\n",
|
|
"presets": []
|
|
},
|
|
"aliases": ["app"],
|
|
"x-type": "application",
|
|
"description": "Create a React application.",
|
|
"implementation": "/packages/react/src/generators/application/application#applicationGeneratorInternal.ts",
|
|
"hidden": false,
|
|
"path": "/packages/react/src/generators/application/schema.json",
|
|
"type": "generator"
|
|
}
|