From 682d9ce6125cec397cad1ff4c3719993a8c0d1e4 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 14 May 2020 12:03:02 +0200 Subject: [PATCH 1/2] packages,plugins: point types to src/ for development + add pre/post back cli commands --- packages/backend-common/package.json | 3 ++ packages/cli/src/commands/pack.ts | 34 +++++++++++++++++++ packages/cli/src/index.ts | 17 ++++++++-- .../plugins/welcome/package.json.hbs | 4 ++- .../templates/default-plugin/package.json.hbs | 4 ++- packages/core/package.json | 4 ++- packages/dev-utils/package.json | 4 ++- packages/test-utils-core/package.json | 4 ++- packages/test-utils/package.json | 4 ++- packages/theme/package.json | 4 ++- plugins/catalog/package.json | 4 ++- plugins/explore/package.json | 4 ++- plugins/graphiql/package.json | 4 ++- plugins/home-page/package.json | 4 ++- plugins/lighthouse/package.json | 4 ++- plugins/register-component/package.json | 4 ++- plugins/scaffolder-backend/package.json | 3 ++ plugins/scaffolder/package.json | 4 ++- plugins/tech-radar/package.json | 4 ++- plugins/welcome/package.json | 4 ++- 20 files changed, 103 insertions(+), 18 deletions(-) create mode 100644 packages/cli/src/commands/pack.ts diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 55f66c66a1..27ef241f3d 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -3,6 +3,7 @@ "description": "Common functionality library for Backstage backends", "version": "0.1.1-alpha.5", "main": "dist", + "types": "src/index.ts", "private": false, "publishConfig": { "access": "public" @@ -21,6 +22,8 @@ "build": "backstage-cli build-cache -- tsc", "lint": "backstage-cli lint", "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/packages/cli/src/commands/pack.ts b/packages/cli/src/commands/pack.ts new file mode 100644 index 0000000000..ba9c7725ae --- /dev/null +++ b/packages/cli/src/commands/pack.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2020 Spotify AB + * + * 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. + */ + +import fs from 'fs-extra'; +import { paths } from '../lib/paths'; + +export const pre = async () => { + const pkgPath = paths.resolveTarget('package.json'); + + const pkg = await fs.readJson(pkgPath); + pkg.types = 'dist/index.d.ts'; + await fs.writeJson(pkgPath, pkg, { encoding: 'utf8', spaces: 2 }); +}; + +export const post = async () => { + const pkgPath = paths.resolveTarget('package.json'); + + const pkg = await fs.readJson(pkgPath); + pkg.types = 'src/index.ts'; + await fs.writeJson(pkgPath, pkg, { encoding: 'utf8', spaces: 2 }); +}; diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index e20cef2615..cf89a3c47d 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -82,6 +82,16 @@ const main = (argv: string[]) => { .description('Run tests, forwarding args to Jest, defaulting to watch mode') .action(actionHandler(() => require('./commands/testCommand'))); + program + .command('prepack') + .description('Prepares a package for packaging before publishing') + .action(actionHandler(() => require('./commands/pack').pre)); + + program + .command('postpack') + .description('Restores the changes made by the prepack command') + .action(actionHandler(() => require('./commands/pack').post)); + program .command('watch-deps') .option('--build', 'Build all dependencies on startup') @@ -129,11 +139,14 @@ const main = (argv: string[]) => { // Wraps an action function so that it always exits and handles errors function actionHandler( - actionRequireFunc: () => { default(...args: T): Promise }, + actionRequireFunc: + | (() => { default(...args: T): Promise }) + | (() => (...args: T) => Promise), ): (...args: T) => Promise { return async (...args: T) => { try { - const actionFunc = actionRequireFunc().default; + const ret = actionRequireFunc(); + const actionFunc = typeof ret === 'function' ? ret : ret.default; await actionFunc(...args); process.exit(0); } catch (error) { diff --git a/packages/cli/templates/default-app/plugins/welcome/package.json.hbs b/packages/cli/templates/default-app/plugins/welcome/package.json.hbs index 75321fa60c..19788fc902 100644 --- a/packages/cli/templates/default-app/plugins/welcome/package.json.hbs +++ b/packages/cli/templates/default-app/plugins/welcome/package.json.hbs @@ -2,7 +2,7 @@ "name": "plugin-welcome", "version": "0.0.0", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "private": true, "scripts": { "build": "backstage-cli plugin:build", @@ -10,6 +10,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 896266b5a5..6fb7ab9d61 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -2,7 +2,7 @@ "name": "@backstage/plugin-{{id}}", "version": "{{version}}", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -11,6 +11,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index f2a1adc57b..eeb007b9e6 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -17,11 +17,13 @@ ], "license": "Apache-2.0", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 605bd8b6ef..b1c22fc100 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -17,11 +17,13 @@ ], "license": "Apache-2.0", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/packages/test-utils-core/package.json b/packages/test-utils-core/package.json index ce13becdb2..e4a9541855 100644 --- a/packages/test-utils-core/package.json +++ b/packages/test-utils-core/package.json @@ -17,11 +17,13 @@ ], "license": "Apache-2.0", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 512af5020f..4cb465db14 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -17,11 +17,13 @@ ], "license": "Apache-2.0", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/packages/theme/package.json b/packages/theme/package.json index 38392959e8..6c26f2d32b 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -17,10 +17,12 @@ ], "license": "Apache-2.0", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index b34c85e497..77bc8ed5b0 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-catalog", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -11,6 +11,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 0750b2bd09..902fadb6be 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-explore", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -11,6 +11,8 @@ "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", "clean": "backstage-cli clean", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "start": "backstage-cli plugin:serve" }, "dependencies": { diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index f031ea643c..6344264147 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -17,13 +17,15 @@ ], "license": "Apache-2.0", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/plugins/home-page/package.json b/plugins/home-page/package.json index 015ad1deab..12b4868329 100644 --- a/plugins/home-page/package.json +++ b/plugins/home-page/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-home-page", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -11,6 +11,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 62487f3f1d..917636e747 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-lighthouse", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -11,6 +11,8 @@ "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", "clean": "backstage-cli clean", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "start": "backstage-cli plugin:serve" }, "dependencies": { diff --git a/plugins/register-component/package.json b/plugins/register-component/package.json index 68822e983b..0962f84a41 100644 --- a/plugins/register-component/package.json +++ b/plugins/register-component/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-register-component", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -11,6 +11,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index f1c97bbce8..1c596681cc 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -2,12 +2,15 @@ "name": "@backstage/plugin-scaffolder-backend", "version": "0.1.1-alpha.5", "main": "dist", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { "build": "tsc", "lint": "backstage-cli lint", "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 3dc7893ba9..08571713a0 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-scaffolder", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -11,6 +11,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean" }, "dependencies": { diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 5e6b90b221..2995cd7f16 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-tech-radar", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "license": "Apache-2.0", "private": true, "scripts": { @@ -10,6 +10,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean", "start": "backstage-cli plugin:serve" }, diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index b9f9156b45..ff086a0b04 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -2,7 +2,7 @@ "name": "@backstage/plugin-welcome", "version": "0.1.1-alpha.5", "main": "dist/index.esm.js", - "types": "dist/index.d.ts", + "types": "src/index.ts", "private": true, "license": "Apache-2.0", "scripts": { @@ -10,6 +10,8 @@ "lint": "backstage-cli lint", "test": "backstage-cli test", "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", "clean": "backstage-cli clean", "start": "backstage-cli plugin:serve" }, From 2414267cc05083629cc1ce05a3dbbb57fd8d0164 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 14 May 2020 14:25:05 +0200 Subject: [PATCH 2/2] tsconfig: skip declaration map creation --- packages/cli/config/tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cli/config/tsconfig.json b/packages/cli/config/tsconfig.json index a05e809caa..f905dcb771 100644 --- a/packages/cli/config/tsconfig.json +++ b/packages/cli/config/tsconfig.json @@ -4,7 +4,6 @@ "compilerOptions": { "allowJs": true, "noEmit": false, - "declarationMap": true, "incremental": true, "target": "ES2019", "module": "ESNext",