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/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", 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 8c1e07d579..c814473826 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 140075499a..b701c8e757 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 1ff4579488..2a2c436003 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 a0ceb3497e..aea4f9b6ae 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 dcf8b414b1..8509763333 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 a22be3625d..0367036610 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 af1543d09d..be43eb616a 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 f9d307d930..1987dea1f5 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 62dc7d258c..50c7e0be84 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 ae1e20842d..a90bd27a1f 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 c542ef866e..bd97a6ec4f 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 1d8e6f2530..89a9d3709f 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 ca3b7ddbc6..8df06e518b 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 240d404b76..3d6be66644 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 b2422e3a7f..ecf863a881 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 5803ae9516..91053a31f7 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" },