From 24e45d494f50c6a883a389216ed663b9fb1e2523 Mon Sep 17 00:00:00 2001 From: Jack Hsu Date: Fri, 7 Jul 2023 13:59:41 -0400 Subject: [PATCH] feat(bundling): rename esbuild-project, rollup-project, and webpack-project generators to "configuration" generators for consistency in naming (#18003) --- docs/generated/manifests/menus.json | 18 ++-- docs/generated/manifests/packages.json | 30 +++---- docs/generated/packages-metadata.json | 24 +++--- .../packages/esbuild/documents/overview.md | 4 +- .../packages/esbuild/executors/esbuild.json | 2 +- .../esbuild/generators/configuration.json | 75 ++++++++++++++++ .../rollup/generators/configuration.json | 83 ++++++++++++++++++ .../webpack/generators/configuration.json | 85 +++++++++++++++++++ .../shared/packages/esbuild/esbuild-plugin.md | 4 +- docs/shared/reference/sitemap.md | 6 +- e2e/rollup/src/rollup.test.ts | 6 +- e2e/webpack/src/webpack.test.ts | 8 +- nx-dev/nx-dev/redirect-rules.js | 6 ++ ...-examples.md => configuration-examples.md} | 6 +- packages/esbuild/docs/esbuild-examples.md | 2 +- packages/esbuild/generators.json | 14 +-- packages/esbuild/index.ts | 8 +- .../configuration.spec.ts} | 8 +- .../configuration.ts} | 8 +- .../schema.d.ts | 0 .../schema.json | 2 +- .../src/generators/setup-build/generator.ts | 8 +- packages/rollup/generators.json | 14 +-- packages/rollup/index.ts | 8 +- .../configuration.spec.ts} | 12 +-- .../configuration.ts} | 8 +- .../schema.d.ts | 0 .../schema.json | 0 .../src/generators/application/application.ts | 7 +- packages/webpack/generators.json | 14 +-- packages/webpack/index.ts | 8 +- .../configuration.spec.ts} | 10 +-- .../configuration.ts} | 18 ++-- .../schema.d.ts | 2 +- .../schema.json | 0 35 files changed, 388 insertions(+), 120 deletions(-) create mode 100644 docs/generated/packages/esbuild/generators/configuration.json create mode 100644 docs/generated/packages/rollup/generators/configuration.json create mode 100644 docs/generated/packages/webpack/generators/configuration.json rename packages/esbuild/docs/{esbuild-project-examples.md => configuration-examples.md} (60%) rename packages/esbuild/src/generators/{esbuild-project/esbuild-project.spec.ts => configuration/configuration.spec.ts} (89%) rename packages/esbuild/src/generators/{esbuild-project/esbuild-project.ts => configuration/configuration.ts} (95%) rename packages/esbuild/src/generators/{esbuild-project => configuration}/schema.d.ts (100%) rename packages/esbuild/src/generators/{esbuild-project => configuration}/schema.json (97%) rename packages/rollup/src/generators/{rollup-project/rollup-project.spec.ts => configuration/configuration.spec.ts} (89%) rename packages/rollup/src/generators/{rollup-project/rollup-project.ts => configuration/configuration.ts} (94%) rename packages/rollup/src/generators/{rollup-project => configuration}/schema.d.ts (100%) rename packages/rollup/src/generators/{rollup-project => configuration}/schema.json (100%) rename packages/webpack/src/generators/{webpack-project/webpack-project.spec.ts => configuration/configuration.spec.ts} (91%) rename packages/webpack/src/generators/{webpack-project/webpack-project.ts => configuration/configuration.ts} (89%) rename packages/webpack/src/generators/{webpack-project => configuration}/schema.d.ts (85%) rename packages/webpack/src/generators/{webpack-project => configuration}/schema.json (100%) diff --git a/docs/generated/manifests/menus.json b/docs/generated/manifests/menus.json index 9c7e822ce0..f2c0767a35 100644 --- a/docs/generated/manifests/menus.json +++ b/docs/generated/manifests/menus.json @@ -4841,9 +4841,9 @@ "disableCollapsible": false }, { - "id": "esbuild-project", - "path": "/packages/esbuild/generators/esbuild-project", - "name": "esbuild-project", + "id": "configuration", + "path": "/packages/esbuild/generators/configuration", + "name": "configuration", "children": [], "isExternal": false, "disableCollapsible": false @@ -6530,9 +6530,9 @@ "disableCollapsible": false }, { - "id": "rollup-project", - "path": "/packages/rollup/generators/rollup-project", - "name": "rollup-project", + "id": "configuration", + "path": "/packages/rollup/generators/configuration", + "name": "configuration", "children": [], "isExternal": false, "disableCollapsible": false @@ -6986,9 +6986,9 @@ "disableCollapsible": false }, { - "id": "webpack-project", - "path": "/packages/webpack/generators/webpack-project", - "name": "webpack-project", + "id": "configuration", + "path": "/packages/webpack/generators/configuration", + "name": "configuration", "children": [], "isExternal": false, "disableCollapsible": false diff --git a/docs/generated/manifests/packages.json b/docs/generated/manifests/packages.json index ab397134b5..181b7b7096 100644 --- a/docs/generated/manifests/packages.json +++ b/docs/generated/manifests/packages.json @@ -651,13 +651,13 @@ "path": "/packages/esbuild/generators/init", "type": "generator" }, - "/packages/esbuild/generators/esbuild-project": { + "/packages/esbuild/generators/configuration": { "description": "Add esbuild configuration to a project.", - "file": "generated/packages/esbuild/generators/esbuild-project.json", + "file": "generated/packages/esbuild/generators/configuration.json", "hidden": true, - "name": "esbuild-project", - "originalFilePath": "/packages/esbuild/src/generators/esbuild-project/schema.json", - "path": "/packages/esbuild/generators/esbuild-project", + "name": "configuration", + "originalFilePath": "/packages/esbuild/src/generators/configuration/schema.json", + "path": "/packages/esbuild/generators/configuration", "type": "generator" } }, @@ -2336,13 +2336,13 @@ "path": "/packages/rollup/generators/init", "type": "generator" }, - "/packages/rollup/generators/rollup-project": { + "/packages/rollup/generators/configuration": { "description": "Add rollup configuration to a project.", - "file": "generated/packages/rollup/generators/rollup-project.json", + "file": "generated/packages/rollup/generators/configuration.json", "hidden": true, - "name": "rollup-project", - "originalFilePath": "/packages/rollup/src/generators/rollup-project/schema.json", - "path": "/packages/rollup/generators/rollup-project", + "name": "configuration", + "originalFilePath": "/packages/rollup/src/generators/configuration/schema.json", + "path": "/packages/rollup/generators/configuration", "type": "generator" } }, @@ -2782,13 +2782,13 @@ "path": "/packages/webpack/generators/init", "type": "generator" }, - "/packages/webpack/generators/webpack-project": { + "/packages/webpack/generators/configuration": { "description": "Add webpack configuration to a project.", - "file": "generated/packages/webpack/generators/webpack-project.json", + "file": "generated/packages/webpack/generators/configuration.json", "hidden": true, - "name": "webpack-project", - "originalFilePath": "/packages/webpack/src/generators/webpack-project/schema.json", - "path": "/packages/webpack/generators/webpack-project", + "name": "configuration", + "originalFilePath": "/packages/webpack/src/generators/configuration/schema.json", + "path": "/packages/webpack/generators/configuration", "type": "generator" } }, diff --git a/docs/generated/packages-metadata.json b/docs/generated/packages-metadata.json index 176350597f..e3fe8f5992 100644 --- a/docs/generated/packages-metadata.json +++ b/docs/generated/packages-metadata.json @@ -642,11 +642,11 @@ }, { "description": "Add esbuild configuration to a project.", - "file": "generated/packages/esbuild/generators/esbuild-project.json", + "file": "generated/packages/esbuild/generators/configuration.json", "hidden": true, - "name": "esbuild-project", - "originalFilePath": "/packages/esbuild/src/generators/esbuild-project/schema.json", - "path": "esbuild/generators/esbuild-project", + "name": "configuration", + "originalFilePath": "/packages/esbuild/src/generators/configuration/schema.json", + "path": "esbuild/generators/configuration", "type": "generator" } ], @@ -2313,11 +2313,11 @@ }, { "description": "Add rollup configuration to a project.", - "file": "generated/packages/rollup/generators/rollup-project.json", + "file": "generated/packages/rollup/generators/configuration.json", "hidden": true, - "name": "rollup-project", - "originalFilePath": "/packages/rollup/src/generators/rollup-project/schema.json", - "path": "rollup/generators/rollup-project", + "name": "configuration", + "originalFilePath": "/packages/rollup/src/generators/configuration/schema.json", + "path": "rollup/generators/configuration", "type": "generator" } ], @@ -2754,11 +2754,11 @@ }, { "description": "Add webpack configuration to a project.", - "file": "generated/packages/webpack/generators/webpack-project.json", + "file": "generated/packages/webpack/generators/configuration.json", "hidden": true, - "name": "webpack-project", - "originalFilePath": "/packages/webpack/src/generators/webpack-project/schema.json", - "path": "webpack/generators/webpack-project", + "name": "configuration", + "originalFilePath": "/packages/webpack/src/generators/configuration/schema.json", + "path": "webpack/generators/configuration", "type": "generator" } ], diff --git a/docs/generated/packages/esbuild/documents/overview.md b/docs/generated/packages/esbuild/documents/overview.md index 5dba8a1977..e080e50349 100644 --- a/docs/generated/packages/esbuild/documents/overview.md +++ b/docs/generated/packages/esbuild/documents/overview.md @@ -45,13 +45,13 @@ This command will install the esbuild plugin if needed, and set `@nx/esbuild:esb If you already have a JS project that you want to use esbuild for, run this command: ```shell -nx g esbuild-project mylib +nx g @nx/esbuild:configuration mylib ``` This generator validates there isn't an existing `build` target. If you want to overwrite the existing target you can pass the `--skipValidation` option. ```shell -nx g esbuild-project mylib --skipValidation +nx g @nx/esbuild:configuration mylib --skipValidation ``` ## Using esbuild diff --git a/docs/generated/packages/esbuild/executors/esbuild.json b/docs/generated/packages/esbuild/executors/esbuild.json index 67783d869a..fc93bfb457 100644 --- a/docs/generated/packages/esbuild/executors/esbuild.json +++ b/docs/generated/packages/esbuild/executors/esbuild.json @@ -206,7 +206,7 @@ } }, "additionalProperties": true, - "examplesFile": "`/project.json`:\n\n```json\n{\n //...\n \"targets\": {\n //...\n \"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\"\n }\n }\n }\n}\n```\n\n```bash\nnx build \n```\n\n## Examples\n\n{% tabs %}\n{% tab label=\"CommonJS output\" %}\n\nThe CommonJS format is required in some environments, such as Electron applications. By default, `esbuild` will use the ESM format, which is recommended for Web and Node applications. You may also output to multiple formats.\n\n```bash\nnx build --format=cjs\nnx build --format=esm,cjs\nnx build # defaults to es# defaults to esm\n```\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"format\": [\"esm\", \"cjs\"]\n}\n```\n\n{% /tab %}\n{% tab label=\"External packages\" %}\n\nYou can avoid packages from being bundled by providing the `external` option with a list of packages to skip.\n\nYou can also use `*` wildcard to match assets.\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"external\": [\"lodash\", \"*.png\"]\n}\n```\n\n{% /tab %}\n{% tab label=\"Skip type checking\" %}\n\nType checking is the slowest part of the build. You may want to skip type checking during build and run it as another job in CI.\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"skipTypeCheck\": true\n}\n```\n\n{% /tab %}\n{% tab label=\"Additional esbuild options\" %}\n\nAdditional [esbuild options](https://esbuild.github.io/api/) can be passed using `esbuildOptions` in your project configuration.\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"esbuildOptions\": {\n \"legalComments\": \"inline\"\n \"banner\": {\n \".js\": \"// banner\"\n },\n \"footer\": {\n \".js\": \"// footer\"\n }\n }\n}\n```\n\n{% /tab %}\n{% tabs %}\n", + "examplesFile": "`/project.json`:\n\n```jsonc\n{\n //...\n \"targets\": {\n //...\n \"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\"\n }\n }\n }\n}\n```\n\n```bash\nnx build \n```\n\n## Examples\n\n{% tabs %}\n{% tab label=\"CommonJS output\" %}\n\nThe CommonJS format is required in some environments, such as Electron applications. By default, `esbuild` will use the ESM format, which is recommended for Web and Node applications. You may also output to multiple formats.\n\n```bash\nnx build --format=cjs\nnx build --format=esm,cjs\nnx build # defaults to es# defaults to esm\n```\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"format\": [\"esm\", \"cjs\"]\n}\n```\n\n{% /tab %}\n{% tab label=\"External packages\" %}\n\nYou can avoid packages from being bundled by providing the `external` option with a list of packages to skip.\n\nYou can also use `*` wildcard to match assets.\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"external\": [\"lodash\", \"*.png\"]\n}\n```\n\n{% /tab %}\n{% tab label=\"Skip type checking\" %}\n\nType checking is the slowest part of the build. You may want to skip type checking during build and run it as another job in CI.\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"skipTypeCheck\": true\n}\n```\n\n{% /tab %}\n{% tab label=\"Additional esbuild options\" %}\n\nAdditional [esbuild options](https://esbuild.github.io/api/) can be passed using `esbuildOptions` in your project configuration.\n\n```json\n\"build\": {\n \"executor\": \"@nx/esbuild:esbuild\",\n \"options\": {\n \"main\": \"\",\n \"tsConfig\": \"/tsconfig.app.json\",\n \"outputPath\": \"dist/\",\n \"esbuildOptions\": {\n \"legalComments\": \"inline\"\n \"banner\": {\n \".js\": \"// banner\"\n },\n \"footer\": {\n \".js\": \"// footer\"\n }\n }\n}\n```\n\n{% /tab %}\n{% tabs %}\n", "presets": [] }, "description": "Bundle a package using EsBuild.", diff --git a/docs/generated/packages/esbuild/generators/configuration.json b/docs/generated/packages/esbuild/generators/configuration.json new file mode 100644 index 0000000000..0dd6daf91f --- /dev/null +++ b/docs/generated/packages/esbuild/generators/configuration.json @@ -0,0 +1,75 @@ +{ + "name": "configuration", + "aliases": ["esbuild-project"], + "factory": "./src/generators/configuration/configuration", + "schema": { + "$schema": "http://json-schema.org/schema", + "$id": "NxEsBuildProject", + "cli": "nx", + "title": "Add esbuild configuration to a project", + "description": "Add esbuild configuration to a project.", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The name of the project.", + "$default": { "$source": "argv", "index": 0 }, + "x-dropdown": "project", + "x-prompt": "What is the name of the project to set up a esbuild for?", + "x-priority": "important" + }, + "main": { + "type": "string", + "description": "Path relative to the workspace root for the main entry file. Defaults to `/src/main.ts` or `src/index.ts`, whichever is found.", + "alias": "entryFile", + "x-priority": "important" + }, + "tsConfig": { + "type": "string", + "description": "Path relative to the workspace root for the tsconfig file to build with. Defaults to `/tsconfig.app.json` or `/tsconfig.lib.json`, whichever is found.", + "x-priority": "important" + }, + "skipFormat": { + "description": "Skip formatting files.", + "type": "boolean", + "default": false, + "x-priority": "internal" + }, + "skipPackageJson": { + "type": "boolean", + "default": false, + "description": "Do not add dependencies to `package.json`.", + "x-priority": "internal" + }, + "skipValidation": { + "type": "boolean", + "default": false, + "description": "Do not perform any validation on existing project.", + "x-priority": "internal" + }, + "importPath": { + "type": "string", + "description": "The library name used to import it, like `@myorg/my-awesome-lib`." + }, + "platform": { + "type": "string", + "description": "Platform target for outputs.", + "enum": ["browser", "node", "neutral"], + "default": "node" + }, + "buildTarget": { + "description": "The build target to add.", + "type": "string", + "default": "build" + } + }, + "required": [], + "examplesFile": "```bash\nnx g @nx/esbuild:configuration my-package\n```\n\n{% callout type=\"note\" title=\"Overwriting existing build option\" %}\nThe `configuration` generator validates that an existing `build` target isn't already defined for the project. If you are adding esbuild to a project with an existing `build` target, pass the `--skipValidation` option.\n{% /callout %}\n\nYou may also provide a custom main entry file, or a custom tsconfig file if the defaults don't work. By default, the generator will look for a main file matching `src/index.ts` or `src/main.ts`, and a tsconfig file matching `tsconfig.app.json` or `tsconfig.lib.json`.\n\n```bash\nnx g @nx/esbuild:configuration my-package \\\n--main=packages/my-package/src/entry.ts \\\n--tsConfig=packages/my-package/tsconfig.custom.json\n```\n", + "presets": [] + }, + "description": "Add esbuild configuration to a project.", + "hidden": true, + "implementation": "/packages/esbuild/src/generators/configuration/configuration.ts", + "path": "/packages/esbuild/src/generators/configuration/schema.json", + "type": "generator" +} diff --git a/docs/generated/packages/rollup/generators/configuration.json b/docs/generated/packages/rollup/generators/configuration.json new file mode 100644 index 0000000000..e17a829963 --- /dev/null +++ b/docs/generated/packages/rollup/generators/configuration.json @@ -0,0 +1,83 @@ +{ + "name": "configuration", + "aliases": ["rollup-project"], + "factory": "./src/generators/configuration/configuration", + "schema": { + "$schema": "http://json-schema.org/schema", + "$id": "NxRollupProject", + "cli": "nx", + "title": "Add Rollup Configuration to a project", + "description": "Add Rollup Configuration to a project.", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The name of the project.", + "$default": { "$source": "argv", "index": 0 }, + "x-dropdown": "project", + "x-prompt": "What is the name of the project to set up a rollup for?", + "x-priority": "important" + }, + "compiler": { + "type": "string", + "enum": ["babel", "swc", "tsc"], + "description": "The compiler to use to build source.", + "default": "babel" + }, + "main": { + "type": "string", + "description": "Path relative to the workspace root for the main entry file. Defaults to '/src/main.ts'.", + "alias": "entryFile", + "x-priority": "important" + }, + "tsConfig": { + "type": "string", + "description": "Path relative to the workspace root for the tsconfig file to build with. Defaults to '/tsconfig.app.json'.", + "x-priority": "important" + }, + "skipFormat": { + "description": "Skip formatting files.", + "type": "boolean", + "default": false, + "x-priority": "internal" + }, + "skipPackageJson": { + "type": "boolean", + "default": false, + "description": "Do not add dependencies to `package.json`.", + "x-priority": "internal" + }, + "skipValidation": { + "type": "boolean", + "default": false, + "description": "Do not perform any validation on existing project.", + "x-priority": "internal" + }, + "importPath": { + "type": "string", + "description": "The library name used to import it, like `@myorg/my-awesome-lib`." + }, + "external": { + "type": "array", + "description": "A list of external modules that will not be bundled (`react`, `react-dom`, etc.).", + "items": { "type": "string" } + }, + "rollupConfig": { + "type": "string", + "description": "Path relative to workspace root to a custom rollup file that takes a config object and returns an updated config." + }, + "buildTarget": { + "description": "The build target to add.", + "type": "string", + "default": "build" + } + }, + "required": [], + "presets": [] + }, + "description": "Add rollup configuration to a project.", + "hidden": true, + "implementation": "/packages/rollup/src/generators/configuration/configuration.ts", + "path": "/packages/rollup/src/generators/configuration/schema.json", + "type": "generator" +} diff --git a/docs/generated/packages/webpack/generators/configuration.json b/docs/generated/packages/webpack/generators/configuration.json new file mode 100644 index 0000000000..508705b601 --- /dev/null +++ b/docs/generated/packages/webpack/generators/configuration.json @@ -0,0 +1,85 @@ +{ + "name": "configuration", + "aliases": ["webpack-project"], + "factory": "./src/generators/configuration/configuration", + "schema": { + "$schema": "http://json-schema.org/schema", + "$id": "NxWebpackProject", + "cli": "nx", + "title": "Add Webpack Configuration to a project", + "description": "Add Webpack Configuration to a project.", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The name of the project.", + "$default": { "$source": "argv", "index": 0 }, + "x-dropdown": "project", + "x-prompt": "What is the name of the project to set up a webpack for?", + "x-priority": "important" + }, + "compiler": { + "type": "string", + "enum": ["babel", "swc", "tsc"], + "description": "The compiler to use to build source.", + "default": "swc" + }, + "main": { + "type": "string", + "description": "Path relative to the workspace root for the main entry file. Defaults to '/src/main.ts'.", + "x-priority": "important" + }, + "tsConfig": { + "type": "string", + "description": "Path relative to the workspace root for the tsconfig file to build with. Defaults to '/tsconfig.app.json'.", + "x-priority": "important" + }, + "target": { + "type": "string", + "description": "Target platform for the build, same as the Webpack config option.", + "enum": ["node", "web", "webworker"], + "default": "web" + }, + "skipFormat": { + "description": "Skip formatting files.", + "type": "boolean", + "default": false, + "x-priority": "internal" + }, + "skipPackageJson": { + "type": "boolean", + "default": false, + "description": "Do not add dependencies to `package.json`.", + "x-priority": "internal" + }, + "skipValidation": { + "type": "boolean", + "default": false, + "description": "Do not perform any validation on existing project.", + "x-priority": "internal" + }, + "devServer": { + "type": "boolean", + "description": "Add a serve target to run a local webpack dev-server", + "default": false + }, + "webpackConfig": { + "type": "string", + "description": "Path relative to workspace root to a custom webpack file that takes a config object and returns an updated config.", + "x-priority": "internal" + }, + "babelConfig": { + "type": "string", + "description": "Optionally specify a path relative to workspace root to the babel configuration file of your project.", + "x-completion-type": "file" + } + }, + "required": [], + "presets": [] + }, + "description": "Add webpack configuration to a project.", + "hidden": true, + "implementation": "/packages/webpack/src/generators/configuration/configuration.ts", + "path": "/packages/webpack/src/generators/configuration/schema.json", + "type": "generator" +} diff --git a/docs/shared/packages/esbuild/esbuild-plugin.md b/docs/shared/packages/esbuild/esbuild-plugin.md index 5dba8a1977..e080e50349 100644 --- a/docs/shared/packages/esbuild/esbuild-plugin.md +++ b/docs/shared/packages/esbuild/esbuild-plugin.md @@ -45,13 +45,13 @@ This command will install the esbuild plugin if needed, and set `@nx/esbuild:esb If you already have a JS project that you want to use esbuild for, run this command: ```shell -nx g esbuild-project mylib +nx g @nx/esbuild:configuration mylib ``` This generator validates there isn't an existing `build` target. If you want to overwrite the existing target you can pass the `--skipValidation` option. ```shell -nx g esbuild-project mylib --skipValidation +nx g @nx/esbuild:configuration mylib --skipValidation ``` ## Using esbuild diff --git a/docs/shared/reference/sitemap.md b/docs/shared/reference/sitemap.md index bcf99cf1a0..0eb10dc024 100644 --- a/docs/shared/reference/sitemap.md +++ b/docs/shared/reference/sitemap.md @@ -353,7 +353,7 @@ - [esbuild](/packages/esbuild/executors/esbuild) - [generators](/packages/esbuild/generators) - [init](/packages/esbuild/generators/init) - - [esbuild-project](/packages/esbuild/generators/esbuild-project) + - [configuration](/packages/esbuild/generators/configuration) - [eslint-plugin](/packages/eslint-plugin) - [documents](/packages/eslint-plugin/documents) - [Overview](/packages/eslint-plugin/documents/overview) @@ -558,7 +558,7 @@ - [rollup](/packages/rollup/executors/rollup) - [generators](/packages/rollup/generators) - [init](/packages/rollup/generators/init) - - [rollup-project](/packages/rollup/generators/rollup-project) + - [configuration](/packages/rollup/generators/configuration) - [storybook](/packages/storybook) - [documents](/packages/storybook/documents) - [Nx Storybook Plugin Overview](/packages/storybook/documents/overview) @@ -613,7 +613,7 @@ - [ssr-dev-server](/packages/webpack/executors/ssr-dev-server) - [generators](/packages/webpack/generators) - [init](/packages/webpack/generators/init) - - [webpack-project](/packages/webpack/generators/webpack-project) + - [configuration](/packages/webpack/generators/configuration) - [workspace](/packages/workspace) - [documents](/packages/workspace/documents) - [Overview](/packages/workspace/documents/overview) diff --git a/e2e/rollup/src/rollup.test.ts b/e2e/rollup/src/rollup.test.ts index 85777bab98..704923b7d3 100644 --- a/e2e/rollup/src/rollup.test.ts +++ b/e2e/rollup/src/rollup.test.ts @@ -20,7 +20,7 @@ describe('Rollup Plugin', () => { // babel (default) runCLI( - `generate @nx/rollup:rollup-project ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts` + `generate @nx/rollup:configuration ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts` ); rmDist(); runCLI(`build ${myPkg}`); @@ -34,7 +34,7 @@ describe('Rollup Plugin', () => { // swc runCLI( - `generate @nx/rollup:rollup-project ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=swc` + `generate @nx/rollup:configuration ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=swc` ); rmDist(); runCLI(`build ${myPkg}`); @@ -48,7 +48,7 @@ describe('Rollup Plugin', () => { // tsc runCLI( - `generate @nx/rollup:rollup-project ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=tsc` + `generate @nx/rollup:configuration ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=tsc` ); rmDist(); runCLI(`build ${myPkg}`); diff --git a/e2e/webpack/src/webpack.test.ts b/e2e/webpack/src/webpack.test.ts index 16073e79f8..b1d8a09486 100644 --- a/e2e/webpack/src/webpack.test.ts +++ b/e2e/webpack/src/webpack.test.ts @@ -19,7 +19,7 @@ describe('Webpack Plugin', () => { updateFile(`libs/${myPkg}/src/index.ts`, `console.log('Hello');\n`); runCLI( - `generate @nx/webpack:webpack-project ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts` + `generate @nx/webpack:configuration ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts` ); // Test `scriptType` later during during. @@ -52,7 +52,7 @@ module.exports = composePlugins(withNx(), (config) => { // swc runCLI( - `generate @nx/webpack:webpack-project ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=swc` + `generate @nx/webpack:configuration ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=swc` ); rmDist(); runCLI(`build ${myPkg}`); @@ -66,7 +66,7 @@ module.exports = composePlugins(withNx(), (config) => { // tsc runCLI( - `generate @nx/webpack:webpack-project ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=tsc` + `generate @nx/webpack:configuration ${myPkg} --target=node --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts --compiler=tsc` ); rmDist(); runCLI(`build ${myPkg}`); @@ -80,7 +80,7 @@ module.exports = composePlugins(withNx(), (config) => { updateFile(`libs/${myPkg}/src/index.ts`, `console.log('Hello');\n`); runCLI( - `generate @nx/webpack:webpack-project ${myPkg} --target=node --compiler=babel --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts` + `generate @nx/webpack:configuration ${myPkg} --target=node --compiler=babel --tsConfig=libs/${myPkg}/tsconfig.lib.json --main=libs/${myPkg}/src/index.ts` ); updateFile( diff --git a/nx-dev/nx-dev/redirect-rules.js b/nx-dev/nx-dev/redirect-rules.js index f3c66b863c..7dd284e779 100644 --- a/nx-dev/nx-dev/redirect-rules.js +++ b/nx-dev/nx-dev/redirect-rules.js @@ -148,6 +148,8 @@ const schemaUrls = { '/packages/cypress/generators/configuration', '/packages/cypress/generators/cypress-component-configuration': '/packages/cypress/generators/component-configuration', + '/packages/esbuild/generators/esbuild-project': + '/packages/esbuild/generators/configuration', '/packages/nx-plugin/generators/executor': '/packages/plugin/generators/executor', '/packages/nx-plugin/generators/migration': @@ -156,6 +158,10 @@ const schemaUrls = { '/packages/nx-plugin/generators/schematic': '/packages/plugin/generators/generator', '/packages/nx-plugin/generators/e2e': '/packages/plugin/executors/e2e', + '/packages/rollup/generators/rollup-project': + '/packages/rollup/generators/configuration', + '/packages/webpack/generators/webpack-project': + '/packages/webpack/generators/configuration', '/nx-plugin/executor': '/packages/plugin/generators/executor', '/nx-plugin/migration': '/packages/plugin/generators/migration', '/nx-plugin/plugin': '/packages/plugin/generators/plugin', diff --git a/packages/esbuild/docs/esbuild-project-examples.md b/packages/esbuild/docs/configuration-examples.md similarity index 60% rename from packages/esbuild/docs/esbuild-project-examples.md rename to packages/esbuild/docs/configuration-examples.md index 213a6ee233..4c52a963e7 100644 --- a/packages/esbuild/docs/esbuild-project-examples.md +++ b/packages/esbuild/docs/configuration-examples.md @@ -1,15 +1,15 @@ ```bash -nx g @nx/esbuild:esbuild-project my-package +nx g @nx/esbuild:configuration my-package ``` {% callout type="note" title="Overwriting existing build option" %} -The `esbuild-projet` generator validates that an existing `build` target isn't already defined for the project. If you are adding esbuild to a project with an existing `build` target, pass the `--skipValidation` option. +The `configuration` generator validates that an existing `build` target isn't already defined for the project. If you are adding esbuild to a project with an existing `build` target, pass the `--skipValidation` option. {% /callout %} You may also provide a custom main entry file, or a custom tsconfig file if the defaults don't work. By default, the generator will look for a main file matching `src/index.ts` or `src/main.ts`, and a tsconfig file matching `tsconfig.app.json` or `tsconfig.lib.json`. ```bash -nx g @nx/esbuild:esbuild-project my-package \ +nx g @nx/esbuild:configuration my-package \ --main=packages/my-package/src/entry.ts \ --tsConfig=packages/my-package/tsconfig.custom.json ``` diff --git a/packages/esbuild/docs/esbuild-examples.md b/packages/esbuild/docs/esbuild-examples.md index ffbc549d64..198f628072 100644 --- a/packages/esbuild/docs/esbuild-examples.md +++ b/packages/esbuild/docs/esbuild-examples.md @@ -1,6 +1,6 @@ `/project.json`: -```json +```jsonc { //... "targets": { diff --git a/packages/esbuild/generators.json b/packages/esbuild/generators.json index b788442cc9..fd8a040874 100644 --- a/packages/esbuild/generators.json +++ b/packages/esbuild/generators.json @@ -8,9 +8,10 @@ "description": "Initialize the `@nrwl/esbuild` plugin.", "hidden": true }, - "esbuild-project": { - "factory": "./src/generators/esbuild-project/esbuild-project#esbuildProjectSchematic", - "schema": "./src/generators/esbuild-project/schema.json", + "configuration": { + "aliases": ["esbuild-project"], + "factory": "./src/generators/configuration/configuration#compat", + "schema": "./src/generators/configuration/schema.json", "description": "Add esbuild configuration to a project.", "hidden": true } @@ -23,9 +24,10 @@ "aliases": ["ng-add"], "hidden": true }, - "esbuild-project": { - "factory": "./src/generators/esbuild-project/esbuild-project#esbuildProjectGenerator", - "schema": "./src/generators/esbuild-project/schema.json", + "configuration": { + "aliases": ["esbuild-project"], + "factory": "./src/generators/configuration/configuration", + "schema": "./src/generators/configuration/schema.json", "description": "Add esbuild configuration to a project.", "hidden": true } diff --git a/packages/esbuild/index.ts b/packages/esbuild/index.ts index 0dbda3a6b0..e1b2c26514 100644 --- a/packages/esbuild/index.ts +++ b/packages/esbuild/index.ts @@ -1,3 +1,9 @@ +import { configurationGenerator } from './src/generators/configuration/configuration'; +export { configurationGenerator }; + +// Exported for backwards compatibility in case a plugin is using the old name. +/** @deprecated Use `configurationGenerator` instead. */ +const esbuildProjectGenerator = configurationGenerator; + export * from './src/generators/init/init'; -export * from './src/generators/esbuild-project/esbuild-project'; export * from './src/utils/versions'; diff --git a/packages/esbuild/src/generators/esbuild-project/esbuild-project.spec.ts b/packages/esbuild/src/generators/configuration/configuration.spec.ts similarity index 89% rename from packages/esbuild/src/generators/esbuild-project/esbuild-project.spec.ts rename to packages/esbuild/src/generators/configuration/configuration.spec.ts index 157ffcae7c..b241d770bb 100644 --- a/packages/esbuild/src/generators/esbuild-project/esbuild-project.spec.ts +++ b/packages/esbuild/src/generators/configuration/configuration.spec.ts @@ -5,9 +5,9 @@ import { writeJson, } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; -import esbuildProjectGenerator from './esbuild-project'; +import configurationGenerator from './configuration'; -describe('esbuildProjectGenerator', () => { +describe('configurationGenerator', () => { let tree: Tree; beforeEach(() => { @@ -25,7 +25,7 @@ describe('esbuildProjectGenerator', () => { tree.write(`mypkg/src/${main}`, 'console.log("main");'); writeJson(tree, `mypkg/${tsConfig}`, {}); - await esbuildProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', }); @@ -47,7 +47,7 @@ describe('esbuildProjectGenerator', () => { tree.write(`src/main.ts`, 'console.log("main");'); writeJson(tree, `tsconfig.app.json`, {}); - await esbuildProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', }); diff --git a/packages/esbuild/src/generators/esbuild-project/esbuild-project.ts b/packages/esbuild/src/generators/configuration/configuration.ts similarity index 95% rename from packages/esbuild/src/generators/esbuild-project/esbuild-project.ts rename to packages/esbuild/src/generators/configuration/configuration.ts index d6dc3d6777..d855d685a8 100644 --- a/packages/esbuild/src/generators/esbuild-project/esbuild-project.ts +++ b/packages/esbuild/src/generators/configuration/configuration.ts @@ -14,7 +14,7 @@ import { esbuildInitGenerator } from '../init/init'; import { EsBuildExecutorOptions } from '../../executors/esbuild/schema'; import { EsBuildProjectSchema } from './schema'; -export async function esbuildProjectGenerator( +export async function configurationGenerator( tree: Tree, options: EsBuildProjectSchema ) { @@ -126,8 +126,6 @@ function getTsConfigFile(tree: Tree, options: EsBuildProjectSchema) { return options.tsConfig; } -export const esbuildProjectSchematic = convertNxGenerator( - esbuildProjectGenerator -); +export const compat = convertNxGenerator(configurationGenerator); -export default esbuildProjectGenerator; +export default configurationGenerator; diff --git a/packages/esbuild/src/generators/esbuild-project/schema.d.ts b/packages/esbuild/src/generators/configuration/schema.d.ts similarity index 100% rename from packages/esbuild/src/generators/esbuild-project/schema.d.ts rename to packages/esbuild/src/generators/configuration/schema.d.ts diff --git a/packages/esbuild/src/generators/esbuild-project/schema.json b/packages/esbuild/src/generators/configuration/schema.json similarity index 97% rename from packages/esbuild/src/generators/esbuild-project/schema.json rename to packages/esbuild/src/generators/configuration/schema.json index 1266626ab4..3de4555f0d 100644 --- a/packages/esbuild/src/generators/esbuild-project/schema.json +++ b/packages/esbuild/src/generators/configuration/schema.json @@ -63,5 +63,5 @@ } }, "required": [], - "examplesFile": "../../../docs/esbuild-project-examples.md" + "examplesFile": "../../../docs/configuration-examples.md" } diff --git a/packages/js/src/generators/setup-build/generator.ts b/packages/js/src/generators/setup-build/generator.ts index 0b85307f8d..91925f36fa 100644 --- a/packages/js/src/generators/setup-build/generator.ts +++ b/packages/js/src/generators/setup-build/generator.ts @@ -88,11 +88,11 @@ export async function setupBuildGenerator( break; } case 'esbuild': { - const { esbuildProjectGenerator } = ensurePackage( + const { configurationGenerator } = ensurePackage( '@nx/esbuild', nxVersion ); - const task = await esbuildProjectGenerator(tree, { + const task = await configurationGenerator(tree, { main: mainFile, buildTarget: options.buildTarget, project: options.project, @@ -102,8 +102,8 @@ export async function setupBuildGenerator( break; } case 'rollup': { - const { rollupProjectGenerator } = ensurePackage('@nx/rollup', nxVersion); - const task = await rollupProjectGenerator(tree, { + const { configurationGenerator } = ensurePackage('@nx/rollup', nxVersion); + const task = await configurationGenerator(tree, { buildTarget: options.buildTarget, main: mainFile, project: options.project, diff --git a/packages/rollup/generators.json b/packages/rollup/generators.json index 61e75a106b..7f6dcad5e4 100644 --- a/packages/rollup/generators.json +++ b/packages/rollup/generators.json @@ -8,9 +8,10 @@ "description": "Initialize the `@nrwl/rollup` plugin.", "hidden": true }, - "rollup-project": { - "factory": "./src/generators/rollup-project/rollup-project#rollupProjectSchematic", - "schema": "./src/generators/rollup-project/schema.json", + "configuration": { + "aliases": ["rollup-project"], + "factory": "./src/generators/configuration/configuration#compat", + "schema": "./src/generators/configuration/schema.json", "description": "Add rollup configuration to a project.", "hidden": true } @@ -23,9 +24,10 @@ "aliases": ["ng-add"], "hidden": true }, - "rollup-project": { - "factory": "./src/generators/rollup-project/rollup-project#rollupProjectGenerator", - "schema": "./src/generators/rollup-project/schema.json", + "configuration": { + "aliases": ["rollup-project"], + "factory": "./src/generators/configuration/configuration", + "schema": "./src/generators/configuration/schema.json", "description": "Add rollup configuration to a project.", "hidden": true } diff --git a/packages/rollup/index.ts b/packages/rollup/index.ts index 421854d13f..324c8d6b90 100644 --- a/packages/rollup/index.ts +++ b/packages/rollup/index.ts @@ -1,5 +1,11 @@ +import { configurationGenerator } from './src/generators/configuration/configuration'; +export { configurationGenerator }; + +// Exported for backwards compatibility in case a plugin is using the old name. +/** @deprecated Use `configurationGenerator` instead. */ +export const rollupProjectGenerator = configurationGenerator; + export * from './src/generators/init/init'; -export * from './src/generators/rollup-project/rollup-project'; export type { AssetGlobPattern, Globals, diff --git a/packages/rollup/src/generators/rollup-project/rollup-project.spec.ts b/packages/rollup/src/generators/configuration/configuration.spec.ts similarity index 89% rename from packages/rollup/src/generators/rollup-project/rollup-project.spec.ts rename to packages/rollup/src/generators/configuration/configuration.spec.ts index 8274be292d..b9dfb24210 100644 --- a/packages/rollup/src/generators/rollup-project/rollup-project.spec.ts +++ b/packages/rollup/src/generators/configuration/configuration.spec.ts @@ -7,9 +7,9 @@ import { } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; -import { rollupProjectGenerator } from './rollup-project'; +import configurationGenerator from './configuration'; -describe('rollupProjectGenerator', () => { +describe('configurationGenerator', () => { let tree: Tree; beforeEach(async () => { @@ -22,7 +22,7 @@ describe('rollupProjectGenerator', () => { }); it('should generate files', async () => { - await rollupProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', }); @@ -50,7 +50,7 @@ describe('rollupProjectGenerator', () => { name: '@acme/mypkg', version: '1.0.0', }); - await rollupProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', }); @@ -61,7 +61,7 @@ describe('rollupProjectGenerator', () => { }); it('should support --main option', async () => { - await rollupProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', main: 'libs/mypkg/index.ts', }); @@ -81,7 +81,7 @@ describe('rollupProjectGenerator', () => { }); it('should support --tsConfig option', async () => { - await rollupProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', tsConfig: 'libs/mypkg/tsconfig.custom.json', }); diff --git a/packages/rollup/src/generators/rollup-project/rollup-project.ts b/packages/rollup/src/generators/configuration/configuration.ts similarity index 94% rename from packages/rollup/src/generators/rollup-project/rollup-project.ts rename to packages/rollup/src/generators/configuration/configuration.ts index e5efa0b870..b08a871271 100644 --- a/packages/rollup/src/generators/rollup-project/rollup-project.ts +++ b/packages/rollup/src/generators/configuration/configuration.ts @@ -13,7 +13,7 @@ import { rollupInitGenerator } from '../init/init'; import { RollupExecutorOptions } from '../../executors/rollup/schema'; import { RollupProjectSchema } from './schema'; -export async function rollupProjectGenerator( +export async function configurationGenerator( tree: Tree, options: RollupProjectSchema ) { @@ -99,8 +99,6 @@ function addBuildTarget(tree: Tree, options: RollupProjectSchema) { }); } -export default rollupProjectGenerator; +export default configurationGenerator; -export const rollupProjectSchematic = convertNxGenerator( - rollupProjectGenerator -); +export const compat = convertNxGenerator(configurationGenerator); diff --git a/packages/rollup/src/generators/rollup-project/schema.d.ts b/packages/rollup/src/generators/configuration/schema.d.ts similarity index 100% rename from packages/rollup/src/generators/rollup-project/schema.d.ts rename to packages/rollup/src/generators/configuration/schema.d.ts diff --git a/packages/rollup/src/generators/rollup-project/schema.json b/packages/rollup/src/generators/configuration/schema.json similarity index 100% rename from packages/rollup/src/generators/rollup-project/schema.json rename to packages/rollup/src/generators/configuration/schema.json diff --git a/packages/web/src/generators/application/application.ts b/packages/web/src/generators/application/application.ts index 2f6d643c7a..cf93df96c9 100644 --- a/packages/web/src/generators/application/application.ts +++ b/packages/web/src/generators/application/application.ts @@ -73,14 +73,15 @@ async function setupBundler(tree: Tree, options: NormalizedSchema) { ]; if (options.bundler === 'webpack') { - const { webpackProjectGenerator } = ensurePackage('@nx/webpack', nxVersion); - await webpackProjectGenerator(tree, { + const { configurationGenerator } = ensurePackage< + typeof import('@nx/webpack') + >('@nx/webpack', nxVersion); + await configurationGenerator(tree, { project: options.projectName, main, tsConfig, compiler: options.compiler ?? 'babel', devServer: true, - isolatedConfig: true, webpackConfig: joinPathFragments( options.appProjectRoot, 'webpack.config.js' diff --git a/packages/webpack/generators.json b/packages/webpack/generators.json index 43913018f4..9179cd979a 100644 --- a/packages/webpack/generators.json +++ b/packages/webpack/generators.json @@ -8,9 +8,10 @@ "description": "Initialize the `@nrwl/webpack` plugin.", "hidden": true }, - "webpack-project": { - "factory": "./src/generators/webpack-project/webpack-project#webpackProjectSchematic", - "schema": "./src/generators/webpack-project/schema.json", + "configuration": { + "aliases": ["webpack-project"], + "factory": "./src/generators/configuration/configuration#compat", + "schema": "./src/generators/configuration/schema.json", "description": "Add webpack configuration to a project.", "hidden": true } @@ -23,9 +24,10 @@ "aliases": ["ng-add"], "hidden": true }, - "webpack-project": { - "factory": "./src/generators/webpack-project/webpack-project#webpackProjectGenerator", - "schema": "./src/generators/webpack-project/schema.json", + "configuration": { + "aliases": ["webpack-project"], + "factory": "./src/generators/configuration/configuration", + "schema": "./src/generators/configuration/schema.json", "description": "Add webpack configuration to a project.", "hidden": true } diff --git a/packages/webpack/index.ts b/packages/webpack/index.ts index 1cd12a3551..7b77994105 100644 --- a/packages/webpack/index.ts +++ b/packages/webpack/index.ts @@ -1,7 +1,13 @@ +import { configurationGenerator } from './src/generators/configuration/configuration'; +export { configurationGenerator }; + +// Exported for backwards compatibility in case a plugin is using the old name. +/** @deprecated Use `configurationGenerator` instead. */ +export const webpackProjectGenerator = configurationGenerator; + export * from './src/utils/create-copy-plugin'; export * from './src/utils/config'; export * from './src/generators/init/init'; -export * from './src/generators/webpack-project/webpack-project'; export type { WebDevServerOptions } from './src/executors/dev-server/schema'; export * from './src/executors/dev-server/dev-server.impl'; export * from './src/executors/webpack/lib/normalize-options'; diff --git a/packages/webpack/src/generators/webpack-project/webpack-project.spec.ts b/packages/webpack/src/generators/configuration/configuration.spec.ts similarity index 91% rename from packages/webpack/src/generators/webpack-project/webpack-project.spec.ts rename to packages/webpack/src/generators/configuration/configuration.spec.ts index 21f1c82b09..0430b754cd 100644 --- a/packages/webpack/src/generators/webpack-project/webpack-project.spec.ts +++ b/packages/webpack/src/generators/configuration/configuration.spec.ts @@ -5,7 +5,7 @@ import { } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; -import { webpackProjectGenerator } from './webpack-project'; +import configurationGenerator from './configuration'; describe('webpackProject', () => { let tree: Tree; @@ -20,7 +20,7 @@ describe('webpackProject', () => { }); it('should generate files', async () => { - await webpackProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', }); @@ -39,7 +39,7 @@ describe('webpackProject', () => { }); it('should support --main option', async () => { - await webpackProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', main: 'libs/mypkg/index.ts', }); @@ -59,7 +59,7 @@ describe('webpackProject', () => { }); it('should support --tsConfig option', async () => { - await webpackProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', tsConfig: 'libs/mypkg/tsconfig.custom.json', }); @@ -79,7 +79,7 @@ describe('webpackProject', () => { }); it('should support --devServer option', async () => { - await webpackProjectGenerator(tree, { + await configurationGenerator(tree, { project: 'mypkg', devServer: true, }); diff --git a/packages/webpack/src/generators/webpack-project/webpack-project.ts b/packages/webpack/src/generators/configuration/configuration.ts similarity index 89% rename from packages/webpack/src/generators/webpack-project/webpack-project.ts rename to packages/webpack/src/generators/configuration/configuration.ts index 065662f559..8778f1504a 100644 --- a/packages/webpack/src/generators/webpack-project/webpack-project.ts +++ b/packages/webpack/src/generators/configuration/configuration.ts @@ -9,12 +9,12 @@ import { } from '@nx/devkit'; import { webpackInitGenerator } from '../init/init'; -import { WebpackProjectGeneratorSchema } from './schema'; +import { ConfigurationGeneratorSchema } from './schema'; import { WebpackExecutorOptions } from '../../executors/webpack/schema'; -export async function webpackProjectGenerator( +export async function configurationGenerator( tree: Tree, - options: WebpackProjectGeneratorSchema + options: ConfigurationGeneratorSchema ) { const task = await webpackInitGenerator(tree, { ...options, @@ -35,7 +35,7 @@ export async function webpackProjectGenerator( function checkForTargetConflicts( tree: Tree, - options: WebpackProjectGeneratorSchema + options: ConfigurationGeneratorSchema ) { if (options.skipValidation) return; @@ -54,7 +54,7 @@ function checkForTargetConflicts( } } -function addBuildTarget(tree: Tree, options: WebpackProjectGeneratorSchema) { +function addBuildTarget(tree: Tree, options: ConfigurationGeneratorSchema) { const project = readProjectConfiguration(tree, options.project); const buildOptions: WebpackExecutorOptions = { target: options.target, @@ -132,7 +132,7 @@ module.exports = composePlugins(withNx(), (config) => { }); } -function addServeTarget(tree: Tree, options: WebpackProjectGeneratorSchema) { +function addServeTarget(tree: Tree, options: ConfigurationGeneratorSchema) { const project = readProjectConfiguration(tree, options.project); updateProjectConfiguration(tree, options.project, { ...project, @@ -153,8 +153,6 @@ function addServeTarget(tree: Tree, options: WebpackProjectGeneratorSchema) { }); } -export default webpackProjectGenerator; +export default configurationGenerator; -export const webpackProjectSchematic = convertNxGenerator( - webpackProjectGenerator -); +export const compat = convertNxGenerator(configurationGenerator); diff --git a/packages/webpack/src/generators/webpack-project/schema.d.ts b/packages/webpack/src/generators/configuration/schema.d.ts similarity index 85% rename from packages/webpack/src/generators/webpack-project/schema.d.ts rename to packages/webpack/src/generators/configuration/schema.d.ts index 950a85f4aa..fdf8c9f642 100644 --- a/packages/webpack/src/generators/webpack-project/schema.d.ts +++ b/packages/webpack/src/generators/configuration/schema.d.ts @@ -1,4 +1,4 @@ -export interface WebpackProjectGeneratorSchema { +export interface ConfigurationGeneratorSchema { project: string; main?: string; tsConfig?: string; diff --git a/packages/webpack/src/generators/webpack-project/schema.json b/packages/webpack/src/generators/configuration/schema.json similarity index 100% rename from packages/webpack/src/generators/webpack-project/schema.json rename to packages/webpack/src/generators/configuration/schema.json