From 0d72065dfd74f2bab6ffaca06605d47c8655b0a5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 17 Mar 2024 21:13:07 +0100 Subject: [PATCH 1/3] cli: fix backend dev watch mode Signed-off-by: Patrik Oldsberg --- .changeset/six-shirts-vanish.md | 5 + packages/cli/config/nodeTransform.cjs | 39 +++ packages/cli/knip-report.md | 3 +- packages/cli/package.json | 2 +- .../experimental/startBackendExperimental.ts | 36 ++- yarn.lock | 267 +----------------- 6 files changed, 74 insertions(+), 278 deletions(-) create mode 100644 .changeset/six-shirts-vanish.md create mode 100644 packages/cli/config/nodeTransform.cjs diff --git a/.changeset/six-shirts-vanish.md b/.changeset/six-shirts-vanish.md new file mode 100644 index 0000000000..dca3e0d0fc --- /dev/null +++ b/.changeset/six-shirts-vanish.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': minor +--- + +The backend devlopment server transpilation has been replaced with a simplified solution based on SWC, which is already the transpiler used for tests. This fixed an issue where never versions of the `tsx` dependency had a new contract for signalling dependencies, breaking watch mode. This change fixed file watches as well as enables sourcemaps. diff --git a/packages/cli/config/nodeTransform.cjs b/packages/cli/config/nodeTransform.cjs new file mode 100644 index 0000000000..0f64fb931d --- /dev/null +++ b/packages/cli/config/nodeTransform.cjs @@ -0,0 +1,39 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const { transformSync } = require('@swc/core'); +const { addHook } = require('pirates'); + +addHook( + (code, filename) => { + const transformed = transformSync(code, { + filename, + sourceMaps: 'inline', + module: { type: 'commonjs' }, + }); + process.send?.({ type: 'watch', path: filename }); + return transformed.code; + }, + { extensions: ['.ts', '.cts'], ignoreNodeModules: true }, +); + +addHook( + (code, filename) => { + process.send?.({ type: 'watch', path: filename }); + return code; + }, + { extensions: ['.js', '.cjs'], ignoreNodeModules: true }, +); diff --git a/packages/cli/knip-report.md b/packages/cli/knip-report.md index fa42f97d33..84e38cc861 100644 --- a/packages/cli/knip-report.md +++ b/packages/cli/knip-report.md @@ -1,6 +1,6 @@ # Knip report -## Unused dependencies (27) +## Unused dependencies (28) | Name | Location | Severity | | :------------------------------- | :----------- | :------- | @@ -25,6 +25,7 @@ | @swc/core | package.json | error | | @swc/jest | package.json | error | | esbuild | package.json | error | +| pirates | package.json | error | | postcss | package.json | error | | process | package.json | error | | sucrase | package.json | error | diff --git a/packages/cli/package.json b/packages/cli/package.json index 1af0ef03b7..f633d1f607 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -114,6 +114,7 @@ "ora": "^5.3.0", "p-limit": "^3.1.0", "p-queue": "^6.6.2", + "pirates": "^4.0.6", "postcss": "^8.1.0", "process": "^0.11.10", "react-dev-utils": "^12.0.0-next.60", @@ -131,7 +132,6 @@ "swc-loader": "^0.2.3", "tar": "^6.1.12", "terser-webpack-plugin": "^5.1.3", - "tsx": "^4.0.0", "util": "^0.12.3", "webpack": "^5.70.0", "webpack-dev-server": "^4.7.3", diff --git a/packages/cli/src/lib/experimental/startBackendExperimental.ts b/packages/cli/src/lib/experimental/startBackendExperimental.ts index 0ca3b182b5..19f71aa993 100644 --- a/packages/cli/src/lib/experimental/startBackendExperimental.ts +++ b/packages/cli/src/lib/experimental/startBackendExperimental.ts @@ -22,22 +22,16 @@ import { ctrlc } from 'ctrlc-windows'; import { IpcServer } from './IpcServer'; import { ServerDataStore } from './ServerDataStore'; import debounce from 'lodash/debounce'; -import { fileURLToPath, pathToFileURL } from 'url'; +import { fileURLToPath } from 'url'; import { isAbsolute as isAbsolutePath } from 'path'; import { paths } from '../paths'; import spawn from 'cross-spawn'; -const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(Number); -const supportsModuleLoaderRegister = - nodeMajor > 20 || - (nodeMajor === 20 && nodeMinor >= 6) || - (nodeMajor === 18 && nodeMinor >= 19); - const loaderArgs = [ + '--enable-source-maps', '--require', - require.resolve('tsx/preflight'), - supportsModuleLoaderRegister ? '--import' : '--loader', - pathToFileURL(require.resolve('tsx')).toString(), // Windows prefers a URL here + require.resolve('@backstage/cli/config/nodeTransform.cjs'), + // TODO: Support modules, although there's currently no way to load them since import() is transpiled tp require() ]; export async function startBackendExperimental(options: BackendServeOptions) { @@ -51,11 +45,21 @@ export async function startBackendExperimental(options: BackendServeOptions) { ServerDataStore.bind(server); let exiting = false; + let firstStart = true; let child: ChildProcess | undefined; let watcher: FSWatcher | undefined = undefined; let shutdownPromise: Promise | undefined = undefined; + const watchedPaths = new Set(); + const restart = debounce(async () => { + if (firstStart) { + firstStart = false; + } else { + console.log(); + console.log('Change detected, restarting the development server...'); + console.log(); + } // If a re-trigger happens during an existing shutdown, we just ignore it if (shutdownPromise) { return; @@ -115,14 +119,18 @@ export async function startBackendExperimental(options: BackendServeOptions) { // This captures messages sent by @esbuild-kit/cjs-loader child.on('message', (data: { type?: string } | null) => { - if (typeof data === 'object' && data?.type === 'dependency') { + if (!watcher) { + return; + } + if (typeof data === 'object' && data?.type === 'watch') { let path = (data as { path: string }).path; if (path.startsWith('file:')) { path = fileURLToPath(path); } - if (isAbsolutePath(path)) { - watcher?.add(path); + if (isAbsolutePath(path) && !watchedPaths.has(path)) { + watchedPaths.add(path); + watcher.add(path); } } }); @@ -130,7 +138,7 @@ export async function startBackendExperimental(options: BackendServeOptions) { restart(); - watcher = watch([], { + watcher = watch(['./package.json'], { cwd: process.cwd(), ignoreInitial: true, ignorePermissionErrors: true, diff --git a/yarn.lock b/yarn.lock index 64a90090b0..d2b6b8b95b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3692,6 +3692,7 @@ __metadata: ora: ^5.3.0 p-limit: ^3.1.0 p-queue: ^6.6.2 + pirates: ^4.0.6 postcss: ^8.1.0 process: ^0.11.10 react-dev-utils: ^12.0.0-next.60 @@ -3710,7 +3711,6 @@ __metadata: tar: ^6.1.12 terser-webpack-plugin: ^5.1.3 ts-node: ^10.0.0 - tsx: ^4.0.0 util: ^0.12.3 webpack: ^5.70.0 webpack-dev-server: ^4.7.3 @@ -10957,13 +10957,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/aix-ppc64@npm:0.19.12" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/aix-ppc64@npm:0.20.2" @@ -10978,13 +10971,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-arm64@npm:0.19.12" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-arm64@npm:0.20.2" @@ -10999,13 +10985,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-arm@npm:0.19.12" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-arm@npm:0.20.2" @@ -11020,13 +10999,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-x64@npm:0.19.12" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-x64@npm:0.20.2" @@ -11041,13 +11013,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/darwin-arm64@npm:0.19.12" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/darwin-arm64@npm:0.20.2" @@ -11062,13 +11027,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/darwin-x64@npm:0.19.12" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/darwin-x64@npm:0.20.2" @@ -11083,13 +11041,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/freebsd-arm64@npm:0.19.12" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/freebsd-arm64@npm:0.20.2" @@ -11104,13 +11055,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/freebsd-x64@npm:0.19.12" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/freebsd-x64@npm:0.20.2" @@ -11125,13 +11069,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-arm64@npm:0.19.12" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-arm64@npm:0.20.2" @@ -11146,13 +11083,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-arm@npm:0.19.12" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-arm@npm:0.20.2" @@ -11167,13 +11097,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-ia32@npm:0.19.12" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-ia32@npm:0.20.2" @@ -11188,13 +11111,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-loong64@npm:0.19.12" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-loong64@npm:0.20.2" @@ -11209,13 +11125,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-mips64el@npm:0.19.12" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-mips64el@npm:0.20.2" @@ -11230,13 +11139,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-ppc64@npm:0.19.12" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-ppc64@npm:0.20.2" @@ -11251,13 +11153,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-riscv64@npm:0.19.12" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-riscv64@npm:0.20.2" @@ -11272,13 +11167,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-s390x@npm:0.19.12" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-s390x@npm:0.20.2" @@ -11293,13 +11181,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-x64@npm:0.19.12" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-x64@npm:0.20.2" @@ -11314,13 +11195,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/netbsd-x64@npm:0.19.12" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/netbsd-x64@npm:0.20.2" @@ -11335,13 +11209,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/openbsd-x64@npm:0.19.12" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/openbsd-x64@npm:0.20.2" @@ -11356,13 +11223,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/sunos-x64@npm:0.19.12" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/sunos-x64@npm:0.20.2" @@ -11377,13 +11237,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-arm64@npm:0.19.12" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-arm64@npm:0.20.2" @@ -11398,13 +11251,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-ia32@npm:0.19.12" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-ia32@npm:0.20.2" @@ -11419,13 +11265,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-x64@npm:0.19.12" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-x64@npm:0.20.2" @@ -26909,86 +26748,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:~0.19.10": - version: 0.19.12 - resolution: "esbuild@npm:0.19.12" - dependencies: - "@esbuild/aix-ppc64": 0.19.12 - "@esbuild/android-arm": 0.19.12 - "@esbuild/android-arm64": 0.19.12 - "@esbuild/android-x64": 0.19.12 - "@esbuild/darwin-arm64": 0.19.12 - "@esbuild/darwin-x64": 0.19.12 - "@esbuild/freebsd-arm64": 0.19.12 - "@esbuild/freebsd-x64": 0.19.12 - "@esbuild/linux-arm": 0.19.12 - "@esbuild/linux-arm64": 0.19.12 - "@esbuild/linux-ia32": 0.19.12 - "@esbuild/linux-loong64": 0.19.12 - "@esbuild/linux-mips64el": 0.19.12 - "@esbuild/linux-ppc64": 0.19.12 - "@esbuild/linux-riscv64": 0.19.12 - "@esbuild/linux-s390x": 0.19.12 - "@esbuild/linux-x64": 0.19.12 - "@esbuild/netbsd-x64": 0.19.12 - "@esbuild/openbsd-x64": 0.19.12 - "@esbuild/sunos-x64": 0.19.12 - "@esbuild/win32-arm64": 0.19.12 - "@esbuild/win32-ia32": 0.19.12 - "@esbuild/win32-x64": 0.19.12 - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 2936e29107b43e65a775b78b7bc66ddd7d76febd73840ac7e825fb22b65029422ff51038a08d19b05154f543584bd3afe7d1ef1c63900429475b17fbe61cb61f - languageName: node - linkType: hard - "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -29066,7 +28825,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -29085,7 +28844,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin, fsevents@patch:fsevents@~2.3.3#~builtin": +"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=18f3a7" dependencies: @@ -29323,7 +29082,7 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.2": +"get-tsconfig@npm:^4.7.0": version: 4.7.2 resolution: "get-tsconfig@npm:4.7.2" dependencies: @@ -38240,7 +37999,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.5": +"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.5, pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 @@ -44328,22 +44087,6 @@ __metadata: languageName: node linkType: hard -"tsx@npm:^4.0.0": - version: 4.7.1 - resolution: "tsx@npm:4.7.1" - dependencies: - esbuild: ~0.19.10 - fsevents: ~2.3.3 - get-tsconfig: ^4.7.2 - dependenciesMeta: - fsevents: - optional: true - bin: - tsx: dist/cli.mjs - checksum: 7f77294c0eee9a9b203f89eb299ee80b393d6b4bf79ec01b650502213a23ea08d0dfc52e938b302ef27c97b70557f7f5a590c3174a7e3c8f1140c668eea4a3a2 - languageName: node - linkType: hard - "tty-browserify@npm:0.0.0": version: 0.0.0 resolution: "tty-browserify@npm:0.0.0" From 1bd4596c995f3210f150eb1310248752d1253b29 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 17 Mar 2024 21:25:52 +0100 Subject: [PATCH 2/3] replaced usage to ts-node with CLI nodeTransform Signed-off-by: Patrik Oldsberg --- .changeset/giant-pots-dream.md | 9 +++++++++ .github/workflows/sync_snyk-github-issues.yml | 2 +- package.json | 1 - packages/cli/bin/backstage-cli | 10 +--------- packages/cli/knip-report.md | 3 +-- packages/cli/package.json | 3 +-- packages/codemods/bin/backstage-codemods | 10 +--------- packages/codemods/knip-report.md | 6 ------ packages/codemods/package.json | 3 +-- packages/create-app/bin/backstage-create-app | 11 +---------- packages/create-app/knip-report.md | 3 +-- packages/create-app/package.json | 3 +-- packages/e2e-test/bin/e2e-test | 12 +----------- packages/e2e-test/knip-report.md | 3 +-- packages/e2e-test/package.json | 3 +-- packages/repo-tools/bin/backstage-repo-tools | 10 +--------- packages/repo-tools/knip-report.md | 3 +-- packages/repo-tools/package.json | 1 - packages/techdocs-cli/bin/techdocs-cli | 9 +-------- packages/techdocs-cli/knip-report.md | 3 +-- packages/techdocs-cli/package.json | 3 +-- scripts/snyk-github-issue-sync.ts | 2 +- yarn.lock | 9 +-------- 23 files changed, 28 insertions(+), 94 deletions(-) create mode 100644 .changeset/giant-pots-dream.md diff --git a/.changeset/giant-pots-dream.md b/.changeset/giant-pots-dream.md new file mode 100644 index 0000000000..2baeb866a2 --- /dev/null +++ b/.changeset/giant-pots-dream.md @@ -0,0 +1,9 @@ +--- +'@techdocs/cli': patch +'@backstage/create-app': patch +'@backstage/repo-tools': patch +'@backstage/codemods': patch +'@backstage/cli': patch +--- + +Removed the `ts-node` dev dependency. diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index 638f5213be..149fc32958 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -43,6 +43,6 @@ jobs: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} NODE_OPTIONS: --max-old-space-size=7168 - name: Update Github issues - run: yarn ts-node scripts/snyk-github-issue-sync.ts + run: ./scripts/snyk-github-issue-sync.ts env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/package.json b/package.json index 98ec78baab..ed8f5cdedc 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,6 @@ "shx": "^0.3.2", "sloc": "^0.3.1", "sort-package-json": "^2.8.0", - "ts-node": "^10.4.0", "typescript": "~5.1.0" }, "packageManager": "yarn@3.2.3", diff --git a/packages/cli/bin/backstage-cli b/packages/cli/bin/backstage-cli index 9aa82f6c2a..b721c8d3c1 100755 --- a/packages/cli/bin/backstage-cli +++ b/packages/cli/bin/backstage-cli @@ -24,14 +24,6 @@ const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src')); if (!isLocal || process.env.BACKSTAGE_E2E_CLI_TEST) { require('..'); } else { - require('ts-node').register({ - transpileOnly: true, - /* eslint-disable-next-line no-restricted-syntax */ - project: path.resolve(__dirname, '../../../tsconfig.json'), - compilerOptions: { - module: 'CommonJS', - }, - }); - + require('@backstage/cli/config/nodeTransform.cjs'); require('../src'); } diff --git a/packages/cli/knip-report.md b/packages/cli/knip-report.md index 84e38cc861..16926bb87d 100644 --- a/packages/cli/knip-report.md +++ b/packages/cli/knip-report.md @@ -33,7 +33,7 @@ | glob | package.json | error | | util | package.json | error | -## Unused devDependencies (12) +## Unused devDependencies (11) | Name | Location | Severity | | :-------------------------------------- | :----------- | :------- | @@ -47,7 +47,6 @@ | @types/svgo | package.json | error | | @types/ejs | package.json | error | | nodemon | package.json | error | -| ts-node | package.json | error | | del | package.json | error | ## Referenced optional peerDependencies (4) diff --git a/packages/cli/package.json b/packages/cli/package.json index f633d1f607..f1214e3320 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -170,8 +170,7 @@ "@types/yarnpkg__lockfile": "^1.1.4", "del": "^7.0.0", "msw": "^1.0.0", - "nodemon": "^3.0.1", - "ts-node": "^10.0.0" + "nodemon": "^3.0.1" }, "peerDependencies": { "@vitejs/plugin-react": "^4.0.4", diff --git a/packages/codemods/bin/backstage-codemods b/packages/codemods/bin/backstage-codemods index 0bc4088cae..a43ae6324b 100755 --- a/packages/codemods/bin/backstage-codemods +++ b/packages/codemods/bin/backstage-codemods @@ -24,14 +24,6 @@ const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src')); if (!isLocal) { require('..'); } else { - require('ts-node').register({ - transpileOnly: true, - /* eslint-disable-next-line no-restricted-syntax */ - project: path.resolve(__dirname, '../../../tsconfig.json'), - compilerOptions: { - module: 'CommonJS', - }, - }); - + require('@backstage/cli/config/nodeTransform.cjs'); require('../src'); } diff --git a/packages/codemods/knip-report.md b/packages/codemods/knip-report.md index f9903638ea..2661c35327 100644 --- a/packages/codemods/knip-report.md +++ b/packages/codemods/knip-report.md @@ -1,8 +1,2 @@ # Knip report -## Unused devDependencies (1) - -| Name | Location | Severity | -| :------ | :----------- | :------- | -| ts-node | package.json | error | - diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 3fc1d63eae..202006d4c2 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -52,7 +52,6 @@ "devDependencies": { "@backstage/cli": "workspace:^", "@types/jscodeshift": "^0.11.0", - "@types/node": "^18.17.8", - "ts-node": "^10.0.0" + "@types/node": "^18.17.8" } } diff --git a/packages/create-app/bin/backstage-create-app b/packages/create-app/bin/backstage-create-app index 4639ea96dc..bacee3e835 100755 --- a/packages/create-app/bin/backstage-create-app +++ b/packages/create-app/bin/backstage-create-app @@ -24,15 +24,6 @@ const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src')); if (!isLocal || process.env.BACKSTAGE_E2E_CLI_TEST) { require('..'); } else { - // Only used for development, so should be a devDependency - // eslint-disable-next-line @backstage/no-undeclared-imports - require('ts-node').register({ - transpileOnly: true, - project: path.resolve(__dirname, '../../../tsconfig.json'), - compilerOptions: { - module: 'CommonJS', - }, - }); - + require('@backstage/cli/config/nodeTransform.cjs'); require('../src'); } diff --git a/packages/create-app/knip-report.md b/packages/create-app/knip-report.md index dac197211b..65ef020fc3 100644 --- a/packages/create-app/knip-report.md +++ b/packages/create-app/knip-report.md @@ -1,10 +1,9 @@ # Knip report -## Unused devDependencies (3) +## Unused devDependencies (2) | Name | Location | Severity | | :-------------------- | :----------- | :------- | | @types/command-exists | package.json | error | | nodemon | package.json | error | -| ts-node | package.json | error | diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 6f91013809..a0836ef09e 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -52,8 +52,7 @@ "@types/node": "^18.17.8", "@types/recursive-readdir": "^2.2.0", "msw": "^1.0.0", - "nodemon": "^3.0.1", - "ts-node": "^10.0.0" + "nodemon": "^3.0.1" }, "nodemonConfig": { "watch": "./src", diff --git a/packages/e2e-test/bin/e2e-test b/packages/e2e-test/bin/e2e-test index 27ed3472d5..495f72980b 100755 --- a/packages/e2e-test/bin/e2e-test +++ b/packages/e2e-test/bin/e2e-test @@ -15,15 +15,5 @@ * limitations under the License. */ -const path = require('path'); - -require('ts-node').register({ - transpileOnly: true, - /* eslint-disable-next-line no-restricted-syntax */ - project: path.resolve(__dirname, '../../../tsconfig.json'), - compilerOptions: { - module: 'CommonJS', - }, -}); - +require('@backstage/cli/config/nodeTransform.cjs'); require('../src'); diff --git a/packages/e2e-test/knip-report.md b/packages/e2e-test/knip-report.md index 4020464e7b..baf9661c0a 100644 --- a/packages/e2e-test/knip-report.md +++ b/packages/e2e-test/knip-report.md @@ -1,10 +1,9 @@ # Knip report -## Unused devDependencies (3) +## Unused devDependencies (2) | Name | Location | Severity | | :--------------- | :----------- | :------- | | @types/puppeteer | package.json | error | | nodemon | package.json | error | -| ts-node | package.json | error | diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index 0bd2d8ec76..00cde5e2ab 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -44,8 +44,7 @@ "@types/fs-extra": "^11.0.0", "@types/node": "^18.17.8", "@types/puppeteer": "^5.4.4", - "nodemon": "^3.0.1", - "ts-node": "^10.0.0" + "nodemon": "^3.0.1" }, "nodemonConfig": { "watch": "./src", diff --git a/packages/repo-tools/bin/backstage-repo-tools b/packages/repo-tools/bin/backstage-repo-tools index 377e4a32ca..b723d215fd 100755 --- a/packages/repo-tools/bin/backstage-repo-tools +++ b/packages/repo-tools/bin/backstage-repo-tools @@ -24,14 +24,6 @@ const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src')); if (!isLocal || process.env.BACKSTAGE_E2E_CLI_TEST) { require('..'); } else { - require('ts-node').register({ - transpileOnly: true, - /* eslint-disable-next-line no-restricted-syntax */ - project: path.resolve(__dirname, '../../../tsconfig.json'), - compilerOptions: { - module: 'CommonJS', - }, - }); - + require('@backstage/cli/config/nodeTransform.cjs'); require('../src'); } diff --git a/packages/repo-tools/knip-report.md b/packages/repo-tools/knip-report.md index 7571c6922d..32502b699c 100644 --- a/packages/repo-tools/knip-report.md +++ b/packages/repo-tools/knip-report.md @@ -1,6 +1,6 @@ # Knip report -## Unused dependencies (6) +## Unused dependencies (5) | Name | Location | Severity | | :---------------------------------- | :----------- | :------- | @@ -8,7 +8,6 @@ | @stoplight/spectral-functions | package.json | error | | @stoplight/spectral-runtime | package.json | error | | is-glob | package.json | error | -| ts-node | package.json | error | | glob | package.json | error | ## Unused devDependencies (1) diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 73195e8816..6550c5840b 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -59,7 +59,6 @@ "minimatch": "^9.0.0", "p-limit": "^3.0.2", "portfinder": "^1.0.32", - "ts-node": "^10.0.0", "yaml-diff-patch": "^2.0.0" }, "devDependencies": { diff --git a/packages/techdocs-cli/bin/techdocs-cli b/packages/techdocs-cli/bin/techdocs-cli index 6c0bbd37b5..a43ae6324b 100755 --- a/packages/techdocs-cli/bin/techdocs-cli +++ b/packages/techdocs-cli/bin/techdocs-cli @@ -24,13 +24,6 @@ const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src')); if (!isLocal) { require('..'); } else { - require('ts-node').register({ - transpileOnly: true, - project: path.resolve(__dirname, '../../../tsconfig.json'), - compilerOptions: { - module: 'CommonJS', - }, - }); - + require('@backstage/cli/config/nodeTransform.cjs'); require('../src'); } diff --git a/packages/techdocs-cli/knip-report.md b/packages/techdocs-cli/knip-report.md index 06b1586f74..7329783857 100644 --- a/packages/techdocs-cli/knip-report.md +++ b/packages/techdocs-cli/knip-report.md @@ -6,11 +6,10 @@ | :----------- | :----------- | :------- | | global-agent | package.json | error | -## Unused devDependencies (3) +## Unused devDependencies (2) | Name | Location | Severity | | :----------------- | :----------- | :------- | | @types/webpack-env | package.json | error | | nodemon | package.json | error | -| ts-node | package.json | error | diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index ecda27819d..b1be4ac055 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -44,8 +44,7 @@ "@types/webpack-env": "^1.15.3", "find-process": "^1.4.5", "nodemon": "^3.0.1", - "techdocs-cli-embedded-app": "link:../techdocs-cli-embedded-app", - "ts-node": "^10.0.0" + "techdocs-cli-embedded-app": "link:../techdocs-cli-embedded-app" }, "files": [ "bin", diff --git a/scripts/snyk-github-issue-sync.ts b/scripts/snyk-github-issue-sync.ts index ea7d42a2a4..21bb852b5f 100755 --- a/scripts/snyk-github-issue-sync.ts +++ b/scripts/snyk-github-issue-sync.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env yarn ts-node --transpile-only +#!/usr/bin/env node --require @backstage/cli/config/nodeTransform.cjs /* * Copyright 2021 The Backstage Authors * diff --git a/yarn.lock b/yarn.lock index d2b6b8b95b..2dda73ed3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3710,7 +3710,6 @@ __metadata: swc-loader: ^0.2.3 tar: ^6.1.12 terser-webpack-plugin: ^5.1.3 - ts-node: ^10.0.0 util: ^0.12.3 webpack: ^5.70.0 webpack-dev-server: ^4.7.3 @@ -3750,7 +3749,6 @@ __metadata: commander: ^12.0.0 jscodeshift: ^0.15.0 jscodeshift-add-imports: ^1.0.10 - ts-node: ^10.0.0 bin: backstage-codemods: bin/backstage-codemods languageName: unknown @@ -4106,7 +4104,6 @@ __metadata: nodemon: ^3.0.1 ora: ^5.3.0 recursive-readdir: ^2.2.2 - ts-node: ^10.0.0 bin: backstage-create-app: bin/backstage-create-app languageName: unknown @@ -10138,7 +10135,6 @@ __metadata: minimatch: ^9.0.0 p-limit: ^3.0.2 portfinder: ^1.0.32 - ts-node: ^10.0.0 yaml-diff-patch: ^2.0.0 peerDependencies: "@microsoft/api-extractor-model": "*" @@ -17905,7 +17901,6 @@ __metadata: react-dev-utils: ^12.0.0-next.60 serve-handler: ^6.1.3 techdocs-cli-embedded-app: "link:../techdocs-cli-embedded-app" - ts-node: ^10.0.0 winston: ^3.2.1 bin: techdocs-cli: bin/techdocs-cli @@ -26043,7 +26038,6 @@ __metadata: nodemon: ^3.0.1 pgtools: ^1.0.0 tree-kill: ^1.2.2 - ts-node: ^10.0.0 bin: e2e-test: bin/e2e-test languageName: unknown @@ -41157,7 +41151,6 @@ __metadata: shx: ^0.3.2 sloc: ^0.3.1 sort-package-json: ^2.8.0 - ts-node: ^10.4.0 typescript: ~5.1.0 languageName: unknown linkType: soft @@ -43998,7 +43991,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.0.0, ts-node@npm:^10.4.0, ts-node@npm:^10.9.1": +"ts-node@npm:^10.9.1": version: 10.9.2 resolution: "ts-node@npm:10.9.2" dependencies: From 1bc13fc3293758159e9de392e75ba4c24fa9c059 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 18 Mar 2024 09:46:24 +0100 Subject: [PATCH 3/3] cli: switch node transform type target es2022 and typescript Signed-off-by: Patrik Oldsberg --- packages/cli/config/nodeTransform.cjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/cli/config/nodeTransform.cjs b/packages/cli/config/nodeTransform.cjs index 0f64fb931d..a5eb4e8fb0 100644 --- a/packages/cli/config/nodeTransform.cjs +++ b/packages/cli/config/nodeTransform.cjs @@ -23,6 +23,12 @@ addHook( filename, sourceMaps: 'inline', module: { type: 'commonjs' }, + jsc: { + target: 'es2022', + parser: { + syntax: 'typescript', + }, + }, }); process.send?.({ type: 'watch', path: filename }); return transformed.code;