diff --git a/e2e/ionic-react-e2e/project.json b/e2e/ionic-react-e2e/project.json index 67f3823e..0f973d07 100644 --- a/e2e/ionic-react-e2e/project.json +++ b/e2e/ionic-react-e2e/project.json @@ -4,6 +4,7 @@ "projectType": "application", "sourceRoot": "e2e/ionic-react-e2e/tests", "targets": { + "e2e": {}, "lint": { "executor": "@nx/eslint:lint", "outputs": ["{options.outputFile}"] diff --git a/e2e/ionic-react-e2e/tests/ionic-react.spec.ts b/e2e/ionic-react-e2e/tests/ionic-react.spec.ts index d85f2f2c..87f5a817 100644 --- a/e2e/ionic-react-e2e/tests/ionic-react.spec.ts +++ b/e2e/ionic-react-e2e/tests/ionic-react.spec.ts @@ -1,9 +1,7 @@ import { runNxCommandAsync, uniq } from '@nx/plugin/testing'; -import { createTestProject, installPlugin } from '@nxext/e2e-utils'; +import { createTestProject, installPlugin, stripAnsi } from '@nxext/e2e-utils'; import { rmSync } from 'fs'; -const ansiEscapeCodeRegex = /\x1B\[[0-?]*[ -/]*[@-~]/g; - describe('ionic-react-project e2e', () => { let projectDirectory: string; const app = uniq('ionic-react'); @@ -13,7 +11,7 @@ describe('ionic-react-project e2e', () => { installPlugin(projectDirectory, 'ionic-react'); await runNxCommandAsync( - `generate @nx/react:application ${app} --style=css --minimal --e2eTestRunner=none --linter=none --projectNameAndRootFormat=derived --skipFormat=true` + `generate @nx/react:application ${app} --style=css --bundler=vite --unitTestRunner=vitest --minimal --e2eTestRunner=none --linter=none --projectNameAndRootFormat=derived --skipFormat=true` ); await runNxCommandAsync( `generate @nxext/ionic-react:configuration --project=${app} --appName=test --appId=test --skipFormat=true` @@ -30,14 +28,14 @@ describe('ionic-react-project e2e', () => { it('should build successfully', async () => { const buildResults = await runNxCommandAsync(`build ${app}`); - expect(buildResults.stdout.replace(ansiEscapeCodeRegex, '')).toContain( + expect(stripAnsi(buildResults.stdout)).toContain( `Successfully ran target build for project ${app}` ); }); it('should run tests successfully', async () => { const testResults = await runNxCommandAsync(`test ${app}`); - expect(testResults.stdout.replace(ansiEscapeCodeRegex, '')).toContain( + expect(stripAnsi(testResults.stdout)).toContain( `Successfully ran target test for project ${app}` ); }); diff --git a/nx.json b/nx.json index 420c28f0..7712c093 100644 --- a/nx.json +++ b/nx.json @@ -96,7 +96,7 @@ "cache": true }, "nx-release-publish": { - "dependsOn": ["build"], + "dependsOn": ["^build"], "options": { "packageRoot": "dist/{projectRoot}" } @@ -116,11 +116,10 @@ "projects": ["packages/*", "!common"], "projectsRelationship": "independent", "version": { + "conventionalCommits": true, "generatorOptions": { - "currentVersionResolver": "git-tag", "fallbackCurrentVersionResolver": "disk", - "updateDependents": "auto", - "specifierSource": "conventional-commits" + "updateDependents": "auto" } }, "changelog": { diff --git a/packages/capacitor/package.json b/packages/capacitor/package.json index fa368b40..638c2adc 100644 --- a/packages/capacitor/package.json +++ b/packages/capacitor/package.json @@ -1,6 +1,6 @@ { "name": "@nxext/capacitor", - "version": "19.1.1", + "version": "0.0.0-e2e", "description": "An Nx plugin for developing cross-platform applications using Capacitor", "homepage": "https://nxext.github.io/nx-extensions/docs/capacitor/getting-started.html", "repository": { @@ -18,10 +18,11 @@ "schematics": "./generators.json", "builders": "./executors.json", "dependencies": { - "@nx/devkit": "^19.0.0", - "nx": "^19.0.0", "ignore": "^5.3.1", "tslib": "^2.3.0" }, - "peerDependencies": {} + "peerDependencies": { + "@nx/devkit": "^19.0.0", + "nx": "^19.0.0" + } } diff --git a/packages/ionic-angular/package.json b/packages/ionic-angular/package.json index 886fdd74..99c3400a 100644 --- a/packages/ionic-angular/package.json +++ b/packages/ionic-angular/package.json @@ -1,7 +1,7 @@ { "name": "@nxext/ionic-angular", "description": "An Nx plugin for developing Ionic Angular applications", - "version": "19.1.1", + "version": "0.0.0-e2e", "homepage": "https://nxext.github.io/nx-extensions/docs/ionic-angular/overview.html", "repository": { "type": "git", @@ -20,12 +20,13 @@ "schematics": "./generators.json", "builders": "./executors.json", "dependencies": { - "@nxext/capacitor": "^19.1.1", - "@nx/devkit": "^19.0.0", - "@nx/angular": "^19.0.0", + "@nxext/capacitor": "^0.0.0-e2e", "tslib": "^2.3.0", "typescript": "5.5.4", "@phenomnomnominal/tsquery": "~5.0.1" }, - "peerDependencies": {} + "peerDependencies": { + "@nx/devkit": "^19.0.0", + "@nx/angular": "^19.0.0" + } } diff --git a/packages/ionic-react/package.json b/packages/ionic-react/package.json index fcb02e72..c258b121 100644 --- a/packages/ionic-react/package.json +++ b/packages/ionic-react/package.json @@ -1,6 +1,6 @@ { "name": "@nxext/ionic-react", - "version": "19.1.1", + "version": "0.0.0-e2e", "description": "An Nx plugin for developing Ionic React applications and libraries", "homepage": "https://nxext.github.io/nx-extensions/docs/ionic-react/overview.html", "repository": { @@ -20,9 +20,10 @@ "schematics": "./generators.json", "builders": "./executors.json", "dependencies": { - "@nxext/capacitor": "^19.1.1", - "@nx/devkit": "^19.0.0", + "@nxext/capacitor": "^0.0.0-e2e", "tslib": "^2.3.0" }, - "peerDependencies": {} + "peerDependencies": { + "@nx/devkit": "^19.0.0" + } } diff --git a/packages/ionic-react/src/generators/configuration/files/src/index.html.template b/packages/ionic-react/src/generators/configuration/files/index.html.template similarity index 100% rename from packages/ionic-react/src/generators/configuration/files/src/index.html.template rename to packages/ionic-react/src/generators/configuration/files/index.html.template diff --git a/packages/ionic-react/src/generators/configuration/lib/add-dependencies.ts b/packages/ionic-react/src/generators/configuration/lib/add-dependencies.ts index e352c7a6..c2738ca1 100644 --- a/packages/ionic-react/src/generators/configuration/lib/add-dependencies.ts +++ b/packages/ionic-react/src/generators/configuration/lib/add-dependencies.ts @@ -3,6 +3,10 @@ import { ionicReactRouterVersion, ionicReactVersion, ionIconsVersion, + reactRouterVersion, + capacitorPluginsVersion, + reactRouterDomTypesVersion, + reactRouterTypesVersion, } from '../../../utils/versions'; export function addDependencies(host: Tree) { @@ -12,7 +16,18 @@ export function addDependencies(host: Tree) { '@ionic/react': ionicReactVersion, '@ionic/react-router': ionicReactRouterVersion, ionicons: ionIconsVersion, + '@capacitor/haptics': capacitorPluginsVersion, + '@capacitor/keyboard': capacitorPluginsVersion, + '@capacitor/status-bar': capacitorPluginsVersion, + /** + * Following deps are overwrite because React Router v6 is not compatible with Ionic React Router + */ + 'react-router': reactRouterVersion, + 'react-router-dom': reactRouterVersion, }, - {} + { + '@types/react-router': reactRouterTypesVersion, + '@types/react-router-dom': reactRouterDomTypesVersion, + } ); } diff --git a/packages/ionic-react/src/utils/versions.ts b/packages/ionic-react/src/utils/versions.ts index 7716359e..9b42a005 100644 --- a/packages/ionic-react/src/utils/versions.ts +++ b/packages/ionic-react/src/utils/versions.ts @@ -1,3 +1,11 @@ export const ionicReactVersion = '^8.0.0'; export const ionicReactRouterVersion = '^8.0.0'; export const ionIconsVersion = '^7.0.0'; +export const capacitorPluginsVersion = '^6.0.0'; +/** + * React Router v6 is not compatible with Ionic React Router, so we force using the v5 + * See: https://github.com/ionic-team/ionic-framework/issues/24177, https://github.com/ionic-team/ionic-framework/blob/main/packages/react-router/package.json#L46 + */ +export const reactRouterVersion = '^5.3.4'; +export const reactRouterTypesVersion = '^5.1.20'; +export const reactRouterDomTypesVersion = '^5.3.3'; diff --git a/packages/preact/package.json b/packages/preact/package.json index 59478f23..f93d3704 100644 --- a/packages/preact/package.json +++ b/packages/preact/package.json @@ -1,6 +1,6 @@ { "name": "@nxext/preact", - "version": "19.0.1", + "version": "0.0.0-e2e", "license": "MIT", "author": "Jordan Hall", "description": "Nx plugin for preact", diff --git a/packages/solid/package.json b/packages/solid/package.json index eeabafe8..65ec054a 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -1,6 +1,6 @@ { "name": "@nxext/solid", - "version": "19.0.1", + "version": "0.0.0-e2e", "license": "MIT", "author": "Dominik Pieper", "description": "Nx plugin for solid", diff --git a/packages/stencil/package.json b/packages/stencil/package.json index c220fa49..7e792adb 100644 --- a/packages/stencil/package.json +++ b/packages/stencil/package.json @@ -1,6 +1,6 @@ { "name": "@nxext/stencil", - "version": "19.0.1", + "version": "0.0.0-e2e", "license": "MIT", "author": "Dominik Pieper", "description": "Nx plugin for stenciljs", diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 522dcac7..ba0856a9 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@nxext/svelte", - "version": "19.0.1", + "version": "0.0.0-e2e", "license": "MIT", "author": "Dominik Pieper", "description": "Nx plugin for Svelte", diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index d9da3bde..4bcac960 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@nxext/sveltekit", - "version": "19.0.1", + "version": "0.0.0-e2e", "license": "MIT", "author": "Dominik Pieper", "description": "Nx plugin for Sveltekit", diff --git a/tools/scripts/start-local-registry.ts b/tools/scripts/start-local-registry.ts index ef007361..e0657540 100644 --- a/tools/scripts/start-local-registry.ts +++ b/tools/scripts/start-local-registry.ts @@ -3,6 +3,7 @@ * It is meant to be called in jest's globalSetup. */ import { startLocalRegistry } from '@nx/js/plugins/jest/local-registry'; +import { execFileSync } from 'child_process'; import { releasePublish, releaseVersion } from 'nx/release'; export default async () => { @@ -30,6 +31,15 @@ export default async () => { }, }); + execFileSync('pnpm', [ + 'nx', + 'run-many', + '-t', + 'build', + '--exclude', + 'docs,common', + ]); + await releasePublish({ tag: 'e2e', firstRelease: true,