diff --git a/.changeset/rename-create-app-templates.md b/.changeset/rename-create-app-templates.md new file mode 100644 index 0000000000..3e46b2e0db --- /dev/null +++ b/.changeset/rename-create-app-templates.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Renamed the built-in template directories from `next-app` to `default-app` and `default-app` to `legacy-app`. diff --git a/.gitignore b/.gitignore index e93a77b462..b3bb98901d 100644 --- a/.gitignore +++ b/.gitignore @@ -148,7 +148,7 @@ site # Local configuration files *.local.yaml -!packages/create-app/templates/default-app/app-config.local.yaml +!packages/create-app/templates/legacy-app/app-config.local.yaml # Sensitive credentials *-credentials.yaml diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index dca18849c3..d2d898996d 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -7024,7 +7024,7 @@ The `.fromConfig` of the `DefaultCatalogCollator` also now takes a `tokenManager To apply this change to an existing plugin, it is important that all plugins that you are using have already been migrated. In this case the most crucial piece is that no entity page cards of contents may require the `entity` prop, and they must instead consume the entity from context using `useEntity`. - Since this change is large with a lot of repeated changes, we'll describe a couple of common cases rather than the entire change. If your entity pages are unchanged from the `create-app` template, you can also just bring in the latest version directly from the [template itself](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx). + Since this change is large with a lot of repeated changes, we'll describe a couple of common cases rather than the entire change. If your entity pages are unchanged from the `create-app` template, you can also just bring in the latest version directly from the [template itself](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/legacy-app/packages/app/src/components/catalog/EntityPage.tsx). The first step of the change is to change the `packages/app/src/components/catalog/EntityPage.tsx` export to `entityPage` rather than `EntityPage`. This will require an update to `App.tsx`, which is the only change we need to do outside of `EntityPage.tsx`: diff --git a/packages/create-app/src/createApp.test.ts b/packages/create-app/src/createApp.test.ts index a032f9bb3b..06a0e7df05 100644 --- a/packages/create-app/src/createApp.test.ts +++ b/packages/create-app/src/createApp.test.ts @@ -69,7 +69,7 @@ describe('command entrypoint', () => { expect(tryInitGitRepositoryMock).toHaveBeenCalled(); expect(templatingMock).toHaveBeenCalled(); expect(templatingMock.mock.lastCall?.[0]).toEqual( - findOwnPaths(__dirname).resolve('templates/next-app'), + findOwnPaths(__dirname).resolve('templates/default-app'), ); expect(templatingMock.mock.lastCall?.[1]).toContain( path.join(tmpdir(), 'MyApp'), @@ -85,7 +85,7 @@ describe('command entrypoint', () => { expect(tryInitGitRepositoryMock).toHaveBeenCalled(); expect(templatingMock).toHaveBeenCalled(); expect(templatingMock.mock.lastCall?.[0]).toEqual( - findOwnPaths(__dirname).resolve('templates/next-app'), + findOwnPaths(__dirname).resolve('templates/default-app'), ); expect(templatingMock.mock.lastCall?.[1]).toEqual('myDirectory'); expect(buildAppMock).toHaveBeenCalled(); @@ -98,7 +98,7 @@ describe('command entrypoint', () => { expect(tryInitGitRepositoryMock).toHaveBeenCalled(); expect(templatingMock).toHaveBeenCalled(); expect(templatingMock.mock.lastCall?.[0]).toEqual( - findOwnPaths(__dirname).resolve('templates/default-app'), + findOwnPaths(__dirname).resolve('templates/legacy-app'), ); expect(templatingMock.mock.lastCall?.[1]).toContain( path.join(tmpdir(), 'MyApp'), diff --git a/packages/create-app/src/createApp.ts b/packages/create-app/src/createApp.ts index 68c27d3a1a..21a7cf272c 100644 --- a/packages/create-app/src/createApp.ts +++ b/packages/create-app/src/createApp.ts @@ -67,8 +67,8 @@ export default async (opts: OptionValues): Promise => { /* eslint-disable-next-line no-restricted-syntax */ const ownPaths = findOwnPaths(__dirname); const builtInTemplate = opts.legacy - ? ownPaths.resolve('templates/default-app') - : ownPaths.resolve('templates/next-app'); + ? ownPaths.resolve('templates/legacy-app') + : ownPaths.resolve('templates/default-app'); // Use `--template-path` argument as template when specified. Otherwise, use the default template. const templateDir = opts.templatePath diff --git a/packages/create-app/src/lib/tasks.test.ts b/packages/create-app/src/lib/tasks.test.ts index 50f9d18e26..c16a818187 100644 --- a/packages/create-app/src/lib/tasks.test.ts +++ b/packages/create-app/src/lib/tasks.test.ts @@ -49,42 +49,36 @@ jest.mock('child_process'); jest.mock('./versions', () => ({ packageVersions: { root: '1.2.3', - '@backstage/cli': '1.0.0', - '@backstage/cli-defaults': '1.0.0', + '@backstage/app-defaults': '1.0.0', '@backstage/backend-defaults': '1.0.0', '@backstage/backend-tasks': '1.0.0', - '@backstage/catalog-model': '1.0.0', '@backstage/catalog-client': '1.0.0', + '@backstage/catalog-model': '1.0.0', + '@backstage/cli': '1.0.0', + '@backstage/cli-defaults': '1.0.0', '@backstage/config': '1.0.0', - '@backstage/plugin-app-backend': '1.0.0', - '@backstage/plugin-auth-backend': '1.0.0', - '@backstage/plugin-auth-node': '1.0.0', - '@backstage/plugin-auth-backend-module-github-provider': '1.0.0', - '@backstage/plugin-auth-backend-module-guest-provider': '1.0.0', - '@backstage/plugin-catalog-backend': '1.0.0', - '@backstage/plugin-catalog-backend-module-logs': '1.0.0', - '@backstage/plugin-catalog-backend-module-scaffolder-entity-model': '1.0.0', - '@backstage/plugin-permission-common': '1.0.0', - '@backstage/plugin-permission-node': '1.0.0', - '@backstage/plugin-permission-backend': '1.0.0', - '@backstage/plugin-permission-backend-module-allow-all-policy': '1.0.0', - '@backstage/plugin-proxy-backend': '1.0.0', - '@backstage/plugin-scaffolder-backend': '1.0.0', - '@backstage/plugin-search-backend': '1.0.0', - '@backstage/plugin-search-backend-module-catalog': '1.0.0', - '@backstage/plugin-search-backend-module-pg': '1.0.0', - '@backstage/plugin-search-backend-module-techdocs': '1.0.0', - '@backstage/plugin-search-backend-node': '1.0.0', - '@backstage/plugin-techdocs-backend': '1.0.0', - '@backstage/app-defaults': '1.0.0', '@backstage/core-app-api': '1.0.0', + '@backstage/core-compat-api': '1.0.0', '@backstage/core-components': '1.0.0', '@backstage/core-plugin-api': '1.0.0', '@backstage/e2e-test-utils': '1.0.0', + '@backstage/frontend-defaults': '1.0.0', + '@backstage/frontend-plugin-api': '1.0.0', + '@backstage/frontend-test-utils': '1.0.0', '@backstage/integration-react': '1.0.0', '@backstage/plugin-api-docs': '1.0.0', + '@backstage/plugin-app-backend': '1.0.0', + '@backstage/plugin-app-react': '1.0.0', + '@backstage/plugin-app-visualizer': '1.0.0', '@backstage/plugin-auth': '1.0.0', + '@backstage/plugin-auth-backend': '1.0.0', + '@backstage/plugin-auth-backend-module-github-provider': '1.0.0', + '@backstage/plugin-auth-backend-module-guest-provider': '1.0.0', + '@backstage/plugin-auth-node': '1.0.0', '@backstage/plugin-catalog': '1.0.0', + '@backstage/plugin-catalog-backend': '1.0.0', + '@backstage/plugin-catalog-backend-module-logs': '1.0.0', + '@backstage/plugin-catalog-backend-module-scaffolder-entity-model': '1.0.0', '@backstage/plugin-catalog-common': '1.0.0', '@backstage/plugin-catalog-graph': '1.0.0', '@backstage/plugin-catalog-import': '1.0.0', @@ -95,20 +89,32 @@ jest.mock('./versions', () => ({ '@backstage/plugin-notifications': '1.0.0', '@backstage/plugin-notifications-backend': '1.0.0', '@backstage/plugin-org': '1.0.0', + '@backstage/plugin-permission-backend': '1.0.0', + '@backstage/plugin-permission-backend-module-allow-all-policy': '1.0.0', + '@backstage/plugin-permission-common': '1.0.0', + '@backstage/plugin-permission-node': '1.0.0', + '@backstage/plugin-permission-react': '1.0.0', + '@backstage/plugin-proxy-backend': '1.0.0', '@backstage/plugin-scaffolder': '1.0.0', + '@backstage/plugin-scaffolder-backend': '1.0.0', '@backstage/plugin-scaffolder-backend-module-github': '1.0.0', '@backstage/plugin-scaffolder-backend-module-notifications': '1.0.0', - '@backstage/plugin-permission-react': '1.0.0', '@backstage/plugin-search': '1.0.0', + '@backstage/plugin-search-backend': '1.0.0', + '@backstage/plugin-search-backend-module-catalog': '1.0.0', + '@backstage/plugin-search-backend-module-pg': '1.0.0', + '@backstage/plugin-search-backend-module-techdocs': '1.0.0', + '@backstage/plugin-search-backend-node': '1.0.0', '@backstage/plugin-search-react': '1.0.0', '@backstage/plugin-signals': '1.0.0', '@backstage/plugin-signals-backend': '1.0.0', '@backstage/plugin-techdocs': '1.0.0', - '@backstage/plugin-techdocs-react': '1.0.0', + '@backstage/plugin-techdocs-backend': '1.0.0', '@backstage/plugin-techdocs-module-addons-contrib': '1.0.0', + '@backstage/plugin-techdocs-react': '1.0.0', '@backstage/plugin-user-settings': '1.0.0', - '@backstage/theme': '1.0.0', '@backstage/test-utils': '1.0.0', + '@backstage/theme': '1.0.0', '@backstage/ui': '1.0.0', }, })); diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs index 867871ca1e..58a48a3e95 100644 --- a/packages/create-app/templates/default-app/app-config.yaml.hbs +++ b/packages/create-app/templates/default-app/app-config.yaml.hbs @@ -2,6 +2,21 @@ app: title: Scaffolded Backstage App baseUrl: http://localhost:3000 + # Enable all packages by default, this will discover packages from packages/app/package.json + packages: all + + extensions: + # Disable the nav items that we're manually rendering in packages/app/src/modules/nav/Sidebar.tsx + - nav-item:search: false + - nav-item:user-settings: false + - nav-item:catalog: false + - nav-item:scaffolder: false + + # Configure the catalog index page to be the root page, this is normally mounted on /catalog + - page:catalog: + config: + path: / + organization: name: My Company diff --git a/packages/create-app/templates/default-app/package.json.hbs b/packages/create-app/templates/default-app/package.json.hbs index 836ecccac5..6e2d899860 100644 --- a/packages/create-app/templates/default-app/package.json.hbs +++ b/packages/create-app/templates/default-app/package.json.hbs @@ -27,20 +27,7 @@ "new": { "globals": { "license": "UNLICENSED" - }, - "templates": [ - "@backstage/cli-module-new/templates/legacy-frontend-plugin", - "@backstage/cli-module-new/templates/backend-plugin", - "@backstage/cli-module-new/templates/backend-plugin-module", - "@backstage/cli-module-new/templates/plugin-web-library", - "@backstage/cli-module-new/templates/plugin-node-library", - "@backstage/cli-module-new/templates/plugin-common-library", - "@backstage/cli-module-new/templates/web-library", - "@backstage/cli-module-new/templates/node-library", - "@backstage/cli-module-new/templates/cli-module", - "@backstage/cli-module-new/templates/catalog-provider-module", - "@backstage/cli-module-new/templates/scaffolder-backend-module" - ] + } } } }, diff --git a/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts b/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts index 839ff883de..d8dbc1faa8 100644 --- a/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts +++ b/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts @@ -23,5 +23,11 @@ test('App should render the welcome page', async ({ page }) => { await expect(enterButton).toBeVisible(); await enterButton.click(); - await expect(page.getByText('My Company Catalog')).toBeVisible(); + const nav = page.getByRole('navigation'); + await expect( + nav.getByRole('link', { name: 'Catalog', exact: true }), + ).toBeVisible(); + await expect( + page.getByRole('link', { name: 'APIs', exact: true }), + ).toBeVisible(); }); diff --git a/packages/create-app/templates/default-app/packages/app/package.json.hbs b/packages/create-app/templates/default-app/packages/app/package.json.hbs index 392a00200b..54672f6afa 100644 --- a/packages/create-app/templates/default-app/packages/app/package.json.hbs +++ b/packages/create-app/templates/default-app/packages/app/package.json.hbs @@ -14,33 +14,29 @@ "lint": "backstage-cli package lint" }, "dependencies": { - "@backstage/app-defaults": "^{{version '@backstage/app-defaults'}}", - "@backstage/catalog-model": "^{{version '@backstage/catalog-model'}}", - "@backstage/cli": "^{{version '@backstage/cli'}}", - "@backstage/core-app-api": "^{{version '@backstage/core-app-api'}}", - "@backstage/core-components": "^{{version '@backstage/core-components'}}", - "@backstage/core-plugin-api": "^{{version '@backstage/core-plugin-api'}}", - "@backstage/integration-react": "^{{version '@backstage/integration-react'}}", - "@backstage/plugin-api-docs": "^{{version '@backstage/plugin-api-docs'}}", - "@backstage/plugin-catalog": "^{{version '@backstage/plugin-catalog'}}", - "@backstage/plugin-catalog-common": "^{{version '@backstage/plugin-catalog-common'}}", - "@backstage/plugin-catalog-graph": "^{{version '@backstage/plugin-catalog-graph'}}", - "@backstage/plugin-catalog-import": "^{{version '@backstage/plugin-catalog-import'}}", - "@backstage/plugin-catalog-react": "^{{version '@backstage/plugin-catalog-react'}}", - "@backstage/plugin-kubernetes": "^{{version '@backstage/plugin-kubernetes'}}", + "@backstage/cli": "^{{ version '@backstage/cli'}}", + "@backstage/core-components": "^{{ version '@backstage/core-components'}}", + "@backstage/core-plugin-api": "^{{ version '@backstage/core-plugin-api'}}", + "@backstage/frontend-defaults": "^{{ version '@backstage/frontend-defaults'}}", + "@backstage/frontend-plugin-api": "^{{ version '@backstage/frontend-plugin-api'}}", + "@backstage/integration-react": "^{{ version '@backstage/integration-react'}}", + "@backstage/plugin-api-docs": "^{{ version '@backstage/plugin-api-docs'}}", + "@backstage/plugin-app-react": "^{{ version '@backstage/plugin-app-react'}}", + "@backstage/plugin-app-visualizer": "^{{ version '@backstage/plugin-app-visualizer'}}", + "@backstage/plugin-auth": "^{{ version '@backstage/plugin-auth'}}", + "@backstage/plugin-catalog": "^{{ version '@backstage/plugin-catalog'}}", + "@backstage/plugin-catalog-graph": "^{{ version '@backstage/plugin-catalog-graph'}}", + "@backstage/plugin-catalog-import": "^{{ version '@backstage/plugin-catalog-import'}}", + "@backstage/plugin-kubernetes": "^{{ version '@backstage/plugin-kubernetes'}}", "@backstage/plugin-notifications": "^{{ version '@backstage/plugin-notifications'}}", - "@backstage/plugin-org": "^{{version '@backstage/plugin-org'}}", - "@backstage/plugin-permission-react": "^{{version '@backstage/plugin-permission-react'}}", - "@backstage/plugin-scaffolder": "^{{version '@backstage/plugin-scaffolder'}}", - "@backstage/plugin-search": "^{{version '@backstage/plugin-search'}}", - "@backstage/plugin-search-react": "^{{version '@backstage/plugin-search-react'}}", + "@backstage/plugin-org": "^{{ version '@backstage/plugin-org'}}", + "@backstage/plugin-scaffolder": "^{{ version '@backstage/plugin-scaffolder'}}", + "@backstage/plugin-search": "^{{ version '@backstage/plugin-search'}}", "@backstage/plugin-signals": "^{{ version '@backstage/plugin-signals'}}", - "@backstage/plugin-techdocs": "^{{version '@backstage/plugin-techdocs'}}", - "@backstage/plugin-techdocs-module-addons-contrib": "^{{version '@backstage/plugin-techdocs-module-addons-contrib'}}", - "@backstage/plugin-techdocs-react": "^{{version '@backstage/plugin-techdocs-react'}}", - "@backstage/plugin-user-settings": "^{{version '@backstage/plugin-user-settings'}}", - "@backstage/theme": "^{{version '@backstage/theme'}}", - "@backstage/ui": "^{{version '@backstage/ui'}}", + "@backstage/plugin-techdocs": "^{{ version '@backstage/plugin-techdocs'}}", + "@backstage/plugin-techdocs-module-addons-contrib": "^{{ version '@backstage/plugin-techdocs-module-addons-contrib'}}", + "@backstage/plugin-user-settings": "^{{ version '@backstage/plugin-user-settings'}}", + "@backstage/ui": "^{{ version '@backstage/ui'}}", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "react": "^18.0.2", @@ -49,7 +45,7 @@ "react-router-dom": "^6.30.2" }, "devDependencies": { - "@backstage/test-utils": "^{{version '@backstage/test-utils'}}", + "@backstage/frontend-test-utils": "^{{ version '@backstage/frontend-test-utils'}}", "@playwright/test": "^1.32.3", "@testing-library/dom": "^9.0.0", "@testing-library/jest-dom": "^6.0.0", diff --git a/packages/create-app/templates/default-app/packages/app/src/App.test.tsx b/packages/create-app/templates/default-app/packages/app/src/App.test.tsx index b6ca21d422..98e7a6438d 100644 --- a/packages/create-app/templates/default-app/packages/app/src/App.test.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/App.test.tsx @@ -19,7 +19,7 @@ describe('App', () => { ] as any, }; - const rendered = render(); + const rendered = render(App.createRoot()); await waitFor(() => { expect(rendered.baseElement).toBeInTheDocument(); diff --git a/packages/create-app/templates/default-app/packages/app/src/App.tsx b/packages/create-app/templates/default-app/packages/app/src/App.tsx index bb9c98eff8..c0206fec07 100644 --- a/packages/create-app/templates/default-app/packages/app/src/App.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/App.tsx @@ -1,112 +1,7 @@ -import { Navigate, Route } from 'react-router-dom'; -import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs'; -import { - CatalogEntityPage, - CatalogIndexPage, - catalogPlugin, -} from '@backstage/plugin-catalog'; -import { - CatalogImportPage, - catalogImportPlugin, -} from '@backstage/plugin-catalog-import'; -import { ScaffolderPage, scaffolderPlugin } from '@backstage/plugin-scaffolder'; -import { orgPlugin } from '@backstage/plugin-org'; -import { SearchPage } from '@backstage/plugin-search'; -import { - TechDocsIndexPage, - techdocsPlugin, - TechDocsReaderPage, -} from '@backstage/plugin-techdocs'; -import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; -import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; -import { UserSettingsPage } from '@backstage/plugin-user-settings'; -import { apis } from './apis'; -import { entityPage } from './components/catalog/EntityPage'; -import { searchPage } from './components/search/SearchPage'; -import { Root } from './components/Root'; +import { createApp } from '@backstage/frontend-defaults'; +import catalogPlugin from '@backstage/plugin-catalog/alpha'; +import { navModule } from './modules/nav'; -import { - AlertDisplay, - OAuthRequestDialog, - SignInPage, -} from '@backstage/core-components'; -import { createApp } from '@backstage/app-defaults'; -import { AppRouter, FlatRoutes } from '@backstage/core-app-api'; -import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; -import { RequirePermission } from '@backstage/plugin-permission-react'; -import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha'; -import { NotificationsPage } from '@backstage/plugin-notifications'; -import { SignalsDisplay } from '@backstage/plugin-signals'; - -const app = createApp({ - apis, - bindRoutes({ bind }) { - bind(catalogPlugin.externalRoutes, { - createComponent: scaffolderPlugin.routes.root, - viewTechDoc: techdocsPlugin.routes.docRoot, - createFromTemplate: scaffolderPlugin.routes.selectedTemplate, - }); - bind(apiDocsPlugin.externalRoutes, { - registerApi: catalogImportPlugin.routes.importPage, - }); - bind(scaffolderPlugin.externalRoutes, { - registerComponent: catalogImportPlugin.routes.importPage, - viewTechDoc: techdocsPlugin.routes.docRoot, - }); - bind(orgPlugin.externalRoutes, { - catalogIndex: catalogPlugin.routes.catalogIndex, - }); - }, - components: { - SignInPage: props => , - }, +export default createApp({ + features: [catalogPlugin, navModule], }); - -const routes = ( - - } /> - } /> - } - > - {entityPage} - - } /> - } - > - - - - - } /> - } /> - - - - } - /> - }> - {searchPage} - - } /> - } /> - } /> - -); - -export default app.createRoot( - <> - - - - - {routes} - - , -); diff --git a/packages/create-app/templates/default-app/packages/app/src/index.tsx b/packages/create-app/templates/default-app/packages/app/src/index.tsx index 46f31902f4..ac9e52bdc1 100644 --- a/packages/create-app/templates/default-app/packages/app/src/index.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/index.tsx @@ -3,4 +3,4 @@ import ReactDOM from 'react-dom/client'; import App from './App'; import '@backstage/ui/css/styles.css'; -ReactDOM.createRoot(document.getElementById('root')!).render(); +ReactDOM.createRoot(document.getElementById('root')!).render(App.createRoot()); diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoFull.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoFull.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoFull.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoFull.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoIcon.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoIcon.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoIcon.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoIcon.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/Sidebar.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/Sidebar.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/Sidebar.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/Sidebar.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/SidebarLogo.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/SidebarLogo.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/SidebarLogo.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/SidebarLogo.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/index.ts b/packages/create-app/templates/default-app/packages/app/src/modules/nav/index.ts similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/index.ts rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/index.ts diff --git a/packages/create-app/templates/default-app/playwright.config.ts b/packages/create-app/templates/default-app/playwright.config.ts index 0dc740b466..967bf1b847 100644 --- a/packages/create-app/templates/default-app/playwright.config.ts +++ b/packages/create-app/templates/default-app/playwright.config.ts @@ -24,7 +24,7 @@ export default defineConfig({ timeout: 60_000, expect: { - timeout: 5_000, + timeout: 30_000, }, // Run your local dev server before starting the tests @@ -33,9 +33,9 @@ export default defineConfig({ : [ { command: 'yarn start app', - port: 3000, + url: 'http://localhost:3000', reuseExistingServer: true, - timeout: 60_000, + timeout: 120_000, }, { command: 'yarn start backend', diff --git a/packages/create-app/templates/default-app/yarn.lock b/packages/create-app/templates/default-app/yarn.lock index 5ad7fe233d..f70eb08d6d 100644 --- a/packages/create-app/templates/default-app/yarn.lock +++ b/packages/create-app/templates/default-app/yarn.lock @@ -1 +1,12 @@ -# intentionally left empty +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10 + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + languageName: unknown + linkType: soft diff --git a/packages/create-app/templates/next-app/.dockerignore b/packages/create-app/templates/legacy-app/.dockerignore similarity index 100% rename from packages/create-app/templates/next-app/.dockerignore rename to packages/create-app/templates/legacy-app/.dockerignore diff --git a/packages/create-app/templates/next-app/.eslintignore b/packages/create-app/templates/legacy-app/.eslintignore similarity index 100% rename from packages/create-app/templates/next-app/.eslintignore rename to packages/create-app/templates/legacy-app/.eslintignore diff --git a/packages/create-app/templates/next-app/.eslintrc.js.hbs b/packages/create-app/templates/legacy-app/.eslintrc.js.hbs similarity index 100% rename from packages/create-app/templates/next-app/.eslintrc.js.hbs rename to packages/create-app/templates/legacy-app/.eslintrc.js.hbs diff --git a/packages/create-app/templates/next-app/.gitignore.hbs b/packages/create-app/templates/legacy-app/.gitignore.hbs similarity index 100% rename from packages/create-app/templates/next-app/.gitignore.hbs rename to packages/create-app/templates/legacy-app/.gitignore.hbs diff --git a/packages/create-app/templates/next-app/.prettierignore b/packages/create-app/templates/legacy-app/.prettierignore similarity index 100% rename from packages/create-app/templates/next-app/.prettierignore rename to packages/create-app/templates/legacy-app/.prettierignore diff --git a/packages/create-app/templates/next-app/.yarn/releases/yarn-4.4.1.cjs b/packages/create-app/templates/legacy-app/.yarn/releases/yarn-4.4.1.cjs similarity index 100% rename from packages/create-app/templates/next-app/.yarn/releases/yarn-4.4.1.cjs rename to packages/create-app/templates/legacy-app/.yarn/releases/yarn-4.4.1.cjs diff --git a/packages/create-app/templates/next-app/.yarnrc.yml.hbs b/packages/create-app/templates/legacy-app/.yarnrc.yml.hbs similarity index 100% rename from packages/create-app/templates/next-app/.yarnrc.yml.hbs rename to packages/create-app/templates/legacy-app/.yarnrc.yml.hbs diff --git a/packages/create-app/templates/next-app/README.md b/packages/create-app/templates/legacy-app/README.md similarity index 100% rename from packages/create-app/templates/next-app/README.md rename to packages/create-app/templates/legacy-app/README.md diff --git a/packages/create-app/templates/default-app/app-config.local.yaml b/packages/create-app/templates/legacy-app/app-config.local.yaml similarity index 100% rename from packages/create-app/templates/default-app/app-config.local.yaml rename to packages/create-app/templates/legacy-app/app-config.local.yaml diff --git a/packages/create-app/templates/next-app/app-config.production.yaml b/packages/create-app/templates/legacy-app/app-config.production.yaml similarity index 100% rename from packages/create-app/templates/next-app/app-config.production.yaml rename to packages/create-app/templates/legacy-app/app-config.production.yaml diff --git a/packages/create-app/templates/next-app/app-config.yaml.hbs b/packages/create-app/templates/legacy-app/app-config.yaml.hbs similarity index 95% rename from packages/create-app/templates/next-app/app-config.yaml.hbs rename to packages/create-app/templates/legacy-app/app-config.yaml.hbs index f5fbee4130..756c7e1568 100644 --- a/packages/create-app/templates/next-app/app-config.yaml.hbs +++ b/packages/create-app/templates/legacy-app/app-config.yaml.hbs @@ -2,15 +2,6 @@ app: title: Scaffolded Backstage App baseUrl: http://localhost:3000 - # Enable all packages by default, this will discover packages from packages/app/package.json - packages: all - - extensions: - # Configure the catalog index page to be the root page, this is normally mounted on /catalog - - page:catalog: - config: - path: / - organization: name: My Company diff --git a/packages/create-app/templates/next-app/backstage.json.hbs b/packages/create-app/templates/legacy-app/backstage.json.hbs similarity index 100% rename from packages/create-app/templates/next-app/backstage.json.hbs rename to packages/create-app/templates/legacy-app/backstage.json.hbs diff --git a/packages/create-app/templates/next-app/catalog-info.yaml.hbs b/packages/create-app/templates/legacy-app/catalog-info.yaml.hbs similarity index 100% rename from packages/create-app/templates/next-app/catalog-info.yaml.hbs rename to packages/create-app/templates/legacy-app/catalog-info.yaml.hbs diff --git a/packages/create-app/templates/next-app/examples/entities.yaml b/packages/create-app/templates/legacy-app/examples/entities.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/entities.yaml rename to packages/create-app/templates/legacy-app/examples/entities.yaml diff --git a/packages/create-app/templates/next-app/examples/org.yaml b/packages/create-app/templates/legacy-app/examples/org.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/org.yaml rename to packages/create-app/templates/legacy-app/examples/org.yaml diff --git a/packages/create-app/templates/next-app/examples/template/content/catalog-info.yaml b/packages/create-app/templates/legacy-app/examples/template/content/catalog-info.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/template/content/catalog-info.yaml rename to packages/create-app/templates/legacy-app/examples/template/content/catalog-info.yaml diff --git a/packages/create-app/templates/next-app/examples/template/content/index.js b/packages/create-app/templates/legacy-app/examples/template/content/index.js similarity index 100% rename from packages/create-app/templates/next-app/examples/template/content/index.js rename to packages/create-app/templates/legacy-app/examples/template/content/index.js diff --git a/packages/create-app/templates/next-app/examples/template/content/package.json b/packages/create-app/templates/legacy-app/examples/template/content/package.json similarity index 100% rename from packages/create-app/templates/next-app/examples/template/content/package.json rename to packages/create-app/templates/legacy-app/examples/template/content/package.json diff --git a/packages/create-app/templates/next-app/examples/template/template.yaml b/packages/create-app/templates/legacy-app/examples/template/template.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/template/template.yaml rename to packages/create-app/templates/legacy-app/examples/template/template.yaml diff --git a/packages/create-app/templates/next-app/package.json.hbs b/packages/create-app/templates/legacy-app/package.json.hbs similarity index 69% rename from packages/create-app/templates/next-app/package.json.hbs rename to packages/create-app/templates/legacy-app/package.json.hbs index 6e2d899860..836ecccac5 100644 --- a/packages/create-app/templates/next-app/package.json.hbs +++ b/packages/create-app/templates/legacy-app/package.json.hbs @@ -27,7 +27,20 @@ "new": { "globals": { "license": "UNLICENSED" - } + }, + "templates": [ + "@backstage/cli-module-new/templates/legacy-frontend-plugin", + "@backstage/cli-module-new/templates/backend-plugin", + "@backstage/cli-module-new/templates/backend-plugin-module", + "@backstage/cli-module-new/templates/plugin-web-library", + "@backstage/cli-module-new/templates/plugin-node-library", + "@backstage/cli-module-new/templates/plugin-common-library", + "@backstage/cli-module-new/templates/web-library", + "@backstage/cli-module-new/templates/node-library", + "@backstage/cli-module-new/templates/cli-module", + "@backstage/cli-module-new/templates/catalog-provider-module", + "@backstage/cli-module-new/templates/scaffolder-backend-module" + ] } } }, diff --git a/packages/create-app/templates/next-app/packages/README.md b/packages/create-app/templates/legacy-app/packages/README.md similarity index 100% rename from packages/create-app/templates/next-app/packages/README.md rename to packages/create-app/templates/legacy-app/packages/README.md diff --git a/packages/create-app/templates/next-app/packages/app/.eslintignore b/packages/create-app/templates/legacy-app/packages/app/.eslintignore similarity index 100% rename from packages/create-app/templates/next-app/packages/app/.eslintignore rename to packages/create-app/templates/legacy-app/packages/app/.eslintignore diff --git a/packages/create-app/templates/next-app/packages/app/.eslintrc.js.hbs b/packages/create-app/templates/legacy-app/packages/app/.eslintrc.js.hbs similarity index 100% rename from packages/create-app/templates/next-app/packages/app/.eslintrc.js.hbs rename to packages/create-app/templates/legacy-app/packages/app/.eslintrc.js.hbs diff --git a/packages/create-app/templates/next-app/packages/app/e2e-tests/app.test.ts b/packages/create-app/templates/legacy-app/packages/app/e2e-tests/app.test.ts similarity index 79% rename from packages/create-app/templates/next-app/packages/app/e2e-tests/app.test.ts rename to packages/create-app/templates/legacy-app/packages/app/e2e-tests/app.test.ts index d8dbc1faa8..839ff883de 100644 --- a/packages/create-app/templates/next-app/packages/app/e2e-tests/app.test.ts +++ b/packages/create-app/templates/legacy-app/packages/app/e2e-tests/app.test.ts @@ -23,11 +23,5 @@ test('App should render the welcome page', async ({ page }) => { await expect(enterButton).toBeVisible(); await enterButton.click(); - const nav = page.getByRole('navigation'); - await expect( - nav.getByRole('link', { name: 'Catalog', exact: true }), - ).toBeVisible(); - await expect( - page.getByRole('link', { name: 'APIs', exact: true }), - ).toBeVisible(); + await expect(page.getByText('My Company Catalog')).toBeVisible(); }); diff --git a/packages/create-app/templates/legacy-app/packages/app/package.json.hbs b/packages/create-app/templates/legacy-app/packages/app/package.json.hbs new file mode 100644 index 0000000000..392a00200b --- /dev/null +++ b/packages/create-app/templates/legacy-app/packages/app/package.json.hbs @@ -0,0 +1,76 @@ +{ + "name": "app", + "version": "0.0.0", + "private": true, + "bundled": true, + "backstage": { + "role": "frontend" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "test": "backstage-cli package test", + "lint": "backstage-cli package lint" + }, + "dependencies": { + "@backstage/app-defaults": "^{{version '@backstage/app-defaults'}}", + "@backstage/catalog-model": "^{{version '@backstage/catalog-model'}}", + "@backstage/cli": "^{{version '@backstage/cli'}}", + "@backstage/core-app-api": "^{{version '@backstage/core-app-api'}}", + "@backstage/core-components": "^{{version '@backstage/core-components'}}", + "@backstage/core-plugin-api": "^{{version '@backstage/core-plugin-api'}}", + "@backstage/integration-react": "^{{version '@backstage/integration-react'}}", + "@backstage/plugin-api-docs": "^{{version '@backstage/plugin-api-docs'}}", + "@backstage/plugin-catalog": "^{{version '@backstage/plugin-catalog'}}", + "@backstage/plugin-catalog-common": "^{{version '@backstage/plugin-catalog-common'}}", + "@backstage/plugin-catalog-graph": "^{{version '@backstage/plugin-catalog-graph'}}", + "@backstage/plugin-catalog-import": "^{{version '@backstage/plugin-catalog-import'}}", + "@backstage/plugin-catalog-react": "^{{version '@backstage/plugin-catalog-react'}}", + "@backstage/plugin-kubernetes": "^{{version '@backstage/plugin-kubernetes'}}", + "@backstage/plugin-notifications": "^{{ version '@backstage/plugin-notifications'}}", + "@backstage/plugin-org": "^{{version '@backstage/plugin-org'}}", + "@backstage/plugin-permission-react": "^{{version '@backstage/plugin-permission-react'}}", + "@backstage/plugin-scaffolder": "^{{version '@backstage/plugin-scaffolder'}}", + "@backstage/plugin-search": "^{{version '@backstage/plugin-search'}}", + "@backstage/plugin-search-react": "^{{version '@backstage/plugin-search-react'}}", + "@backstage/plugin-signals": "^{{ version '@backstage/plugin-signals'}}", + "@backstage/plugin-techdocs": "^{{version '@backstage/plugin-techdocs'}}", + "@backstage/plugin-techdocs-module-addons-contrib": "^{{version '@backstage/plugin-techdocs-module-addons-contrib'}}", + "@backstage/plugin-techdocs-react": "^{{version '@backstage/plugin-techdocs-react'}}", + "@backstage/plugin-user-settings": "^{{version '@backstage/plugin-user-settings'}}", + "@backstage/theme": "^{{version '@backstage/theme'}}", + "@backstage/ui": "^{{version '@backstage/ui'}}", + "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.9.1", + "react": "^18.0.2", + "react-dom": "^18.0.2", + "react-router": "^6.30.2", + "react-router-dom": "^6.30.2" + }, + "devDependencies": { + "@backstage/test-utils": "^{{version '@backstage/test-utils'}}", + "@playwright/test": "^1.32.3", + "@testing-library/dom": "^9.0.0", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "@types/react-dom": "*", + "cross-env": "^7.0.0" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "files": [ + "dist" + ] +} diff --git a/packages/create-app/templates/next-app/packages/app/public/android-chrome-192x192.png b/packages/create-app/templates/legacy-app/packages/app/public/android-chrome-192x192.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/android-chrome-192x192.png rename to packages/create-app/templates/legacy-app/packages/app/public/android-chrome-192x192.png diff --git a/packages/create-app/templates/next-app/packages/app/public/apple-touch-icon.png b/packages/create-app/templates/legacy-app/packages/app/public/apple-touch-icon.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/apple-touch-icon.png rename to packages/create-app/templates/legacy-app/packages/app/public/apple-touch-icon.png diff --git a/packages/create-app/templates/next-app/packages/app/public/favicon-16x16.png b/packages/create-app/templates/legacy-app/packages/app/public/favicon-16x16.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/favicon-16x16.png rename to packages/create-app/templates/legacy-app/packages/app/public/favicon-16x16.png diff --git a/packages/create-app/templates/next-app/packages/app/public/favicon-32x32.png b/packages/create-app/templates/legacy-app/packages/app/public/favicon-32x32.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/favicon-32x32.png rename to packages/create-app/templates/legacy-app/packages/app/public/favicon-32x32.png diff --git a/packages/create-app/templates/next-app/packages/app/public/favicon.ico b/packages/create-app/templates/legacy-app/packages/app/public/favicon.ico similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/favicon.ico rename to packages/create-app/templates/legacy-app/packages/app/public/favicon.ico diff --git a/packages/create-app/templates/next-app/packages/app/public/index.html b/packages/create-app/templates/legacy-app/packages/app/public/index.html similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/index.html rename to packages/create-app/templates/legacy-app/packages/app/public/index.html diff --git a/packages/create-app/templates/next-app/packages/app/public/manifest.json b/packages/create-app/templates/legacy-app/packages/app/public/manifest.json similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/manifest.json rename to packages/create-app/templates/legacy-app/packages/app/public/manifest.json diff --git a/packages/create-app/templates/next-app/packages/app/public/robots.txt b/packages/create-app/templates/legacy-app/packages/app/public/robots.txt similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/robots.txt rename to packages/create-app/templates/legacy-app/packages/app/public/robots.txt diff --git a/packages/create-app/templates/next-app/packages/app/public/safari-pinned-tab.svg b/packages/create-app/templates/legacy-app/packages/app/public/safari-pinned-tab.svg similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/safari-pinned-tab.svg rename to packages/create-app/templates/legacy-app/packages/app/public/safari-pinned-tab.svg diff --git a/packages/create-app/templates/next-app/packages/app/src/App.test.tsx b/packages/create-app/templates/legacy-app/packages/app/src/App.test.tsx similarity index 92% rename from packages/create-app/templates/next-app/packages/app/src/App.test.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/App.test.tsx index 98e7a6438d..b6ca21d422 100644 --- a/packages/create-app/templates/next-app/packages/app/src/App.test.tsx +++ b/packages/create-app/templates/legacy-app/packages/app/src/App.test.tsx @@ -19,7 +19,7 @@ describe('App', () => { ] as any, }; - const rendered = render(App.createRoot()); + const rendered = render(); await waitFor(() => { expect(rendered.baseElement).toBeInTheDocument(); diff --git a/packages/create-app/templates/legacy-app/packages/app/src/App.tsx b/packages/create-app/templates/legacy-app/packages/app/src/App.tsx new file mode 100644 index 0000000000..bb9c98eff8 --- /dev/null +++ b/packages/create-app/templates/legacy-app/packages/app/src/App.tsx @@ -0,0 +1,112 @@ +import { Navigate, Route } from 'react-router-dom'; +import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs'; +import { + CatalogEntityPage, + CatalogIndexPage, + catalogPlugin, +} from '@backstage/plugin-catalog'; +import { + CatalogImportPage, + catalogImportPlugin, +} from '@backstage/plugin-catalog-import'; +import { ScaffolderPage, scaffolderPlugin } from '@backstage/plugin-scaffolder'; +import { orgPlugin } from '@backstage/plugin-org'; +import { SearchPage } from '@backstage/plugin-search'; +import { + TechDocsIndexPage, + techdocsPlugin, + TechDocsReaderPage, +} from '@backstage/plugin-techdocs'; +import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; +import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; +import { UserSettingsPage } from '@backstage/plugin-user-settings'; +import { apis } from './apis'; +import { entityPage } from './components/catalog/EntityPage'; +import { searchPage } from './components/search/SearchPage'; +import { Root } from './components/Root'; + +import { + AlertDisplay, + OAuthRequestDialog, + SignInPage, +} from '@backstage/core-components'; +import { createApp } from '@backstage/app-defaults'; +import { AppRouter, FlatRoutes } from '@backstage/core-app-api'; +import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; +import { RequirePermission } from '@backstage/plugin-permission-react'; +import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha'; +import { NotificationsPage } from '@backstage/plugin-notifications'; +import { SignalsDisplay } from '@backstage/plugin-signals'; + +const app = createApp({ + apis, + bindRoutes({ bind }) { + bind(catalogPlugin.externalRoutes, { + createComponent: scaffolderPlugin.routes.root, + viewTechDoc: techdocsPlugin.routes.docRoot, + createFromTemplate: scaffolderPlugin.routes.selectedTemplate, + }); + bind(apiDocsPlugin.externalRoutes, { + registerApi: catalogImportPlugin.routes.importPage, + }); + bind(scaffolderPlugin.externalRoutes, { + registerComponent: catalogImportPlugin.routes.importPage, + viewTechDoc: techdocsPlugin.routes.docRoot, + }); + bind(orgPlugin.externalRoutes, { + catalogIndex: catalogPlugin.routes.catalogIndex, + }); + }, + components: { + SignInPage: props => , + }, +}); + +const routes = ( + + } /> + } /> + } + > + {entityPage} + + } /> + } + > + + + + + } /> + } /> + + + + } + /> + }> + {searchPage} + + } /> + } /> + } /> + +); + +export default app.createRoot( + <> + + + + + {routes} + + , +); diff --git a/packages/create-app/templates/default-app/packages/app/src/apis.ts b/packages/create-app/templates/legacy-app/packages/app/src/apis.ts similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/apis.ts rename to packages/create-app/templates/legacy-app/packages/app/src/apis.ts diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoFull.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoFull.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoIcon.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoIcon.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/Root.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/Root.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/index.ts similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/index.ts diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/catalog/EntityPage.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/catalog/EntityPage.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/search/SearchPage.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/search/SearchPage.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/index.tsx b/packages/create-app/templates/legacy-app/packages/app/src/index.tsx similarity index 64% rename from packages/create-app/templates/next-app/packages/app/src/index.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/index.tsx index ac9e52bdc1..46f31902f4 100644 --- a/packages/create-app/templates/next-app/packages/app/src/index.tsx +++ b/packages/create-app/templates/legacy-app/packages/app/src/index.tsx @@ -3,4 +3,4 @@ import ReactDOM from 'react-dom/client'; import App from './App'; import '@backstage/ui/css/styles.css'; -ReactDOM.createRoot(document.getElementById('root')!).render(App.createRoot()); +ReactDOM.createRoot(document.getElementById('root')!).render(); diff --git a/packages/create-app/templates/next-app/packages/app/src/setupTests.ts b/packages/create-app/templates/legacy-app/packages/app/src/setupTests.ts similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/setupTests.ts rename to packages/create-app/templates/legacy-app/packages/app/src/setupTests.ts diff --git a/packages/create-app/templates/next-app/packages/backend/.eslintrc.js.hbs b/packages/create-app/templates/legacy-app/packages/backend/.eslintrc.js.hbs similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/.eslintrc.js.hbs rename to packages/create-app/templates/legacy-app/packages/backend/.eslintrc.js.hbs diff --git a/packages/create-app/templates/next-app/packages/backend/Dockerfile b/packages/create-app/templates/legacy-app/packages/backend/Dockerfile similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/Dockerfile rename to packages/create-app/templates/legacy-app/packages/backend/Dockerfile diff --git a/packages/create-app/templates/next-app/packages/backend/README.md b/packages/create-app/templates/legacy-app/packages/backend/README.md similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/README.md rename to packages/create-app/templates/legacy-app/packages/backend/README.md diff --git a/packages/create-app/templates/next-app/packages/backend/package.json.hbs b/packages/create-app/templates/legacy-app/packages/backend/package.json.hbs similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/package.json.hbs rename to packages/create-app/templates/legacy-app/packages/backend/package.json.hbs diff --git a/packages/create-app/templates/next-app/packages/backend/src/index.ts b/packages/create-app/templates/legacy-app/packages/backend/src/index.ts similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/src/index.ts rename to packages/create-app/templates/legacy-app/packages/backend/src/index.ts diff --git a/packages/create-app/templates/next-app/playwright.config.ts b/packages/create-app/templates/legacy-app/playwright.config.ts similarity index 100% rename from packages/create-app/templates/next-app/playwright.config.ts rename to packages/create-app/templates/legacy-app/playwright.config.ts diff --git a/packages/create-app/templates/next-app/plugins/README.md b/packages/create-app/templates/legacy-app/plugins/README.md similarity index 100% rename from packages/create-app/templates/next-app/plugins/README.md rename to packages/create-app/templates/legacy-app/plugins/README.md diff --git a/packages/create-app/templates/next-app/tsconfig.json b/packages/create-app/templates/legacy-app/tsconfig.json similarity index 100% rename from packages/create-app/templates/next-app/tsconfig.json rename to packages/create-app/templates/legacy-app/tsconfig.json diff --git a/packages/create-app/templates/next-app/yarn.lock b/packages/create-app/templates/legacy-app/yarn.lock similarity index 100% rename from packages/create-app/templates/next-app/yarn.lock rename to packages/create-app/templates/legacy-app/yarn.lock diff --git a/packages/create-app/templates/next-app/packages/app/package.json.hbs b/packages/create-app/templates/next-app/packages/app/package.json.hbs deleted file mode 100644 index 54672f6afa..0000000000 --- a/packages/create-app/templates/next-app/packages/app/package.json.hbs +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "app", - "version": "0.0.0", - "private": true, - "bundled": true, - "backstage": { - "role": "frontend" - }, - "scripts": { - "start": "backstage-cli package start", - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "test": "backstage-cli package test", - "lint": "backstage-cli package lint" - }, - "dependencies": { - "@backstage/cli": "^{{ version '@backstage/cli'}}", - "@backstage/core-components": "^{{ version '@backstage/core-components'}}", - "@backstage/core-plugin-api": "^{{ version '@backstage/core-plugin-api'}}", - "@backstage/frontend-defaults": "^{{ version '@backstage/frontend-defaults'}}", - "@backstage/frontend-plugin-api": "^{{ version '@backstage/frontend-plugin-api'}}", - "@backstage/integration-react": "^{{ version '@backstage/integration-react'}}", - "@backstage/plugin-api-docs": "^{{ version '@backstage/plugin-api-docs'}}", - "@backstage/plugin-app-react": "^{{ version '@backstage/plugin-app-react'}}", - "@backstage/plugin-app-visualizer": "^{{ version '@backstage/plugin-app-visualizer'}}", - "@backstage/plugin-auth": "^{{ version '@backstage/plugin-auth'}}", - "@backstage/plugin-catalog": "^{{ version '@backstage/plugin-catalog'}}", - "@backstage/plugin-catalog-graph": "^{{ version '@backstage/plugin-catalog-graph'}}", - "@backstage/plugin-catalog-import": "^{{ version '@backstage/plugin-catalog-import'}}", - "@backstage/plugin-kubernetes": "^{{ version '@backstage/plugin-kubernetes'}}", - "@backstage/plugin-notifications": "^{{ version '@backstage/plugin-notifications'}}", - "@backstage/plugin-org": "^{{ version '@backstage/plugin-org'}}", - "@backstage/plugin-scaffolder": "^{{ version '@backstage/plugin-scaffolder'}}", - "@backstage/plugin-search": "^{{ version '@backstage/plugin-search'}}", - "@backstage/plugin-signals": "^{{ version '@backstage/plugin-signals'}}", - "@backstage/plugin-techdocs": "^{{ version '@backstage/plugin-techdocs'}}", - "@backstage/plugin-techdocs-module-addons-contrib": "^{{ version '@backstage/plugin-techdocs-module-addons-contrib'}}", - "@backstage/plugin-user-settings": "^{{ version '@backstage/plugin-user-settings'}}", - "@backstage/ui": "^{{ version '@backstage/ui'}}", - "@material-ui/core": "^4.12.2", - "@material-ui/icons": "^4.9.1", - "react": "^18.0.2", - "react-dom": "^18.0.2", - "react-router": "^6.30.2", - "react-router-dom": "^6.30.2" - }, - "devDependencies": { - "@backstage/frontend-test-utils": "^{{ version '@backstage/frontend-test-utils'}}", - "@playwright/test": "^1.32.3", - "@testing-library/dom": "^9.0.0", - "@testing-library/jest-dom": "^6.0.0", - "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.0.0", - "@types/react-dom": "*", - "cross-env": "^7.0.0" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "files": [ - "dist" - ] -} diff --git a/packages/create-app/templates/next-app/packages/app/src/App.tsx b/packages/create-app/templates/next-app/packages/app/src/App.tsx deleted file mode 100644 index c0206fec07..0000000000 --- a/packages/create-app/templates/next-app/packages/app/src/App.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { createApp } from '@backstage/frontend-defaults'; -import catalogPlugin from '@backstage/plugin-catalog/alpha'; -import { navModule } from './modules/nav'; - -export default createApp({ - features: [catalogPlugin, navModule], -}); diff --git a/packages/e2e-test/src/commands/runCommand.ts b/packages/e2e-test/src/commands/runCommand.ts index 22d0867c4b..eeb8798776 100644 --- a/packages/e2e-test/src/commands/runCommand.ts +++ b/packages/e2e-test/src/commands/runCommand.ts @@ -35,9 +35,9 @@ const ownPaths = findOwnPaths(__dirname); const templatePackagePaths = [ 'packages/cli-module-new/templates/frontend-plugin/package.json.hbs', - 'packages/create-app/templates/next-app/package.json.hbs', - 'packages/create-app/templates/next-app/packages/app/package.json.hbs', - 'packages/create-app/templates/next-app/packages/backend/package.json.hbs', + 'packages/create-app/templates/default-app/package.json.hbs', + 'packages/create-app/templates/default-app/packages/app/package.json.hbs', + 'packages/create-app/templates/default-app/packages/backend/package.json.hbs', ]; export async function runCommand(opts: OptionValues) { @@ -344,7 +344,9 @@ async function overrideModuleResolutions(appDir: string, workspaceDir: string) { pkgJson.dependencies[name] = `file:${pkgPath}`; pkgJson.resolutions[name] = `file:${pkgPath}`; - delete pkgJson.devDependencies[name]; + if (pkgJson.devDependencies) { + delete pkgJson.devDependencies[name]; + } } } fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 });