From 90dc161870c791a68890c93b2256ec66c46df5c6 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Thu, 2 Apr 2020 16:33:29 +0200 Subject: [PATCH 01/58] Add documentation for how to create an app --- README.md | 3 +- docs/getting-started/README.md | 1 + docs/getting-started/create-a-plugin.md | 14 +++- docs/getting-started/create-an-app.md | 81 +++++++++++++++++++++ docs/getting-started/create-app_output.png | Bin 0 -> 310222 bytes 5 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 docs/getting-started/create-an-app.md create mode 100644 docs/getting-started/create-app_output.png diff --git a/README.md b/README.md index 2145e62fa8..990389181f 100644 --- a/README.md +++ b/README.md @@ -75,8 +75,7 @@ For more complex development environment configuration, see the ## Documentation - [FAQs](docs/FAQ.md) -- [Create a Plugin](docs/getting-started/create-a-plugin.md) -- [Structure of a Plugin](docs/getting-started/structure-of-a-plugin.md) +- [Getting Started](docs/getting-started/README.md) - [Frontend architecture](docs/architecture-terminology.md) - [API references](docs/reference/README.md) - Using Backstage components (TODO) diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md index 719e946a7e..163e52b950 100644 --- a/docs/getting-started/README.md +++ b/docs/getting-started/README.md @@ -3,6 +3,7 @@ Here is a collection of tutorials that will guide you through setting up and extending an instance of Backstage with your own plugins. - [Development Environment](development-environment.md) +- [Create a Backstage App](create-an-app.md) - [Create a Backstage plugin](create-a-plugin.md) - [Structure of a plugin](structure-of-a-plugin.md) - Using Backstage components (TODO) diff --git a/docs/getting-started/create-a-plugin.md b/docs/getting-started/create-a-plugin.md index be3be26abb..b0b042ed86 100644 --- a/docs/getting-started/create-a-plugin.md +++ b/docs/getting-started/create-a-plugin.md @@ -1,4 +1,8 @@ -# Create a plugin +# Backstage Plugins + +A Backstage Plugin adds functionality to Backstage. + +## Create a plugin To create a new plugin, make sure you've run `yarn` and installed dependencies, then run the following on your command line (invoking the `backstage-cli`). @@ -6,7 +10,9 @@ To create a new plugin, make sure you've run `yarn` and installed dependencies, yarn create-plugin ``` -![](create-plugin_output.png) +

+ create plugin +

This will create a new Backstage Plugin based on the ID that was provided. It will be built and added to the Backstage App automatically. @@ -14,7 +20,9 @@ added to the Backstage App automatically. _If `yarn start` is already running you should be able to see the default page for your new plugin directly by navigating to `http://localhost:3000/my-plugin`._ -![](my-plugin_screenshot.png) +

+ my plugin +

[Next Step - Structure of a plugin](structure-of-a-plugin.md) diff --git a/docs/getting-started/create-an-app.md b/docs/getting-started/create-an-app.md new file mode 100644 index 0000000000..1d46e81026 --- /dev/null +++ b/docs/getting-started/create-an-app.md @@ -0,0 +1,81 @@ +# Backstage App + +If you want to get setup quickly with your own Backstage project you can create a Backstage App. + +A Backstage App is a monorepo setup with `lerna` that includes everything you need to run Backstage in your own environment. + +## Create an app + +If you have [`npx`](https://github.com/npm/npx) installed simply run: + +```bash +npx @backstage/cli create-app +``` + +Or with `yarn`: + +```bash +yarn add --dev @backstage/cli +yarn run backstage-cli create-app +``` + +This will create a new Backstage App inside the current folder. The name of the app-folder is the name that was provided when prompted. + +

+ create app +

+ +Inside that directory, it will generate all the files and folder structure needed for you to run your app. + +### Folder structure + +``` +app +├── README.md +├── lerna.json +├── package.json +├── prettier.config.js +├── tsconfig.json +├── packages +│ └── app +│ ├── package.json +│ ├── tsconfig.json +│ ├── public +│ │ └── ... +│ └── src +│ ├── App.test.tsx +│ ├── App.tsx +│ ├── index.tsx +│ ├── plugins.ts +│ └── setupTests.ts +└── plugins + └── welcome + ├── README.md + ├── package.json + ├── tsconfig.json + └── src + ├── index.ts + ├── plugin.test.ts + ├── plugin.ts + ├── setupTests.ts + └── components + ├── Timer + │ └── ... + └── WelcomePage + └── ... +``` + +## Run the app + +When the installation is complete you can open the app folder and start the app. + +```bash +cd my-backstage-app +yarn start +``` + +_When `yarn start` is ready it should open up a browser window displaying your app, if not you can navigate to `http://localhost:3000`._ + +[Next Step - Create a Backstage plugin](create-a-plugin.md) + +[Back to Docs](README.md) diff --git a/docs/getting-started/create-app_output.png b/docs/getting-started/create-app_output.png new file mode 100644 index 0000000000000000000000000000000000000000..52dcc130974892a538ff0aed5792feb60c32e78f GIT binary patch literal 310222 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 NQPv_CH(5sdDpf>??(tD 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 dn-I&zSLRPFE-Xc_ Date: Thu, 2 Apr 2020 20:05:00 +0200 Subject: [PATCH 02/58] Add question to FAQ --- docs/FAQ.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 01c3a4f473..5787a6a1f7 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,6 +1,6 @@ # FAQ -## Why Material-UI? +## Q: Why Material-UI? The short answer is that it's what we've been using in Backstage internally. @@ -13,7 +13,7 @@ focus of Backstage is to make plugin developers productive with as few hurdles a possible, material-ui lets plugin makers both get going easily with well-known tech and a large flora of components. -## Are you planning on having plugins cooked into the repo or should they be developed in separate repos? +## Q: Are you planning on having plugins cooked into the repo or should they be developed in separate repos? Additional open sourced plugins would be added to the `plugins` directory in this monorepo. @@ -21,7 +21,7 @@ While we encourage using the open soure model, integrators that want to experime Backstage internally may also choose to develop closed source plugins in a manner that suits them best, for example in their respective Backstage source repository. -## Any plans for integrating with other repository managers such as Gitlab or Bitbucket? +## Q: Any plans for integrating with other repository managers such as Gitlab or Bitbucket? We chose Github by the fact that it is the tool that we are most familiar with and that will naturally lead to integrations for Github specifically being developed in an early stage. @@ -32,7 +32,7 @@ as well. Hopefully contributed by the community. And note that implementations of Backstage can be hosted wherever you feel suits your needs best. -## Can Backstage by used for other things than developer portals? +## Q: Can Backstage by used for other things than developer portals? Yes. @@ -40,3 +40,7 @@ The core frontend framework could be used for building any large-scale web appli That being said, in [Phase 2](https://github.com/spotify/backstage#project-roadmap) of the project we will add features that are needed for developer portals and systems for managing software ecosystems. Our ambition will be to keep Backstage modular. +## Q: My company doesn't have thousands of developers. Is Backstage overkill? + +Sure, having something like Backstage gets more important as the number of developers in your company grows. One of the core reasons to adopt Backstage is to help standardise how software is built at your company. Setting guidelines and deciding on standards is easier when your company is smaller. + From ea2e4fec53d0de284cc88f6f24a3726f5e4336e8 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Fri, 3 Apr 2020 11:40:16 +0200 Subject: [PATCH 03/58] Reword frontend to app --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 990389181f..37d157cddb 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ We created Backstage about 4 years ago. While our internal version of Backstage - 🐇 **Phase 3:** Ecosystem (later) - Everyone's infrastructure stack is different. By fostering a vibrant community of contributors we hope to provide an ecosystem of Open Source plugins/integrations that allows you to pick the tools that match your stack. -Check out our [Milestones](https://github.com/spotify/backstage/milestones) and open [RFCs](https://github.com/spotify/backstage/labels/rfc) how they relate to the three Phases outlined above. +Check out our [Milestones](https://github.com/spotify/backstage/milestones) and open [RFCs](https://github.com/spotify/backstage/labels/rfc) how they relate to the three Phases outlined above. Our vision for Backstage is for it to become the trusted standard toolbox (read: UX layer) for the open source infrastructure landscape. Think of it like Kubernetes for developer experience. We realize this is an ambitious goal. We can’t do it alone. If this sounds interesting or you'd like to help us shape our product vision, we'd love to talk. You can email me directly: [alund@spotify.com](mailto:alund@spotify.com). @@ -41,7 +41,7 @@ Our vision for Backstage is for it to become the trusted standard toolbox (read: The Backstage platform consists of a number of different components: -- **frontend** - Main web application that users interact with. It's built up by a number of different _Plugins_. +- **app** - Main web application that users interact with. It's built up by a number of different _Plugins_. This repo contains an example implementation of an app (located in `packages/example-app`) and you can easily get started with your own app by [creating one](docs/getting-started/create-an-app.md). - **plugins** - Each plugin is treated as a self-contained web app and can include almost any type of content. Plugins all use a common set of platform API's and reusable UI components. Plugins can fetch data either from the _backend_ or through any RESTful API exposed through the _proxy_. - **backend** \* - GraphQL aggregation service that holds the model of your software ecosystem, including organisational information and what team owns what software. The backend also has a Plugin model for extending its graph. - **proxy** \* - Terminates HTTPS and exposes any RESTful API to Plugins. @@ -53,7 +53,7 @@ _\* not yet released_ ## Getting started -To run the Backstage frontend, you will need to have the following installed: +To run a Backstage app, you will need to have the following installed: - [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - [NodeJS](https://nodejs.org/en/download/) - Active LTS Release, currently v12 @@ -69,14 +69,14 @@ $ yarn start The final `yarn start` command should open a local instance of Backstage in your browser, otherwise open one of the URLs printed in the terminal. -For more complex development environment configuration, see the +For more complex development environment configuration, see the [Development Environment](docs/getting-started/development-environment.md) section of the Getting Started docs. ## Documentation - [FAQs](docs/FAQ.md) - [Getting Started](docs/getting-started/README.md) -- [Frontend architecture](docs/architecture-terminology.md) +- [Architecture](docs/architecture-terminology.md) - [API references](docs/reference/README.md) - Using Backstage components (TODO) From 46e7969dd2c9ed8b272bcfb8cc3a7e5ffbbdcc29 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Fri, 3 Apr 2020 14:32:30 +0200 Subject: [PATCH 04/58] Review comments --- docs/getting-started/create-a-plugin.md | 2 +- docs/getting-started/create-an-app.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/create-a-plugin.md b/docs/getting-started/create-a-plugin.md index b0b042ed86..7b8a7cf29b 100644 --- a/docs/getting-started/create-a-plugin.md +++ b/docs/getting-started/create-a-plugin.md @@ -4,7 +4,7 @@ A Backstage Plugin adds functionality to Backstage. ## Create a plugin -To create a new plugin, make sure you've run `yarn` and installed dependencies, then run the following on your command line (invoking the `backstage-cli`). +To create a new plugin, make sure you've run `yarn install` and installed dependencies, then run the following on your command line (invoking the `backstage-cli`). ```bash yarn create-plugin diff --git a/docs/getting-started/create-an-app.md b/docs/getting-started/create-an-app.md index 1d46e81026..afba3b4e7b 100644 --- a/docs/getting-started/create-an-app.md +++ b/docs/getting-started/create-an-app.md @@ -1,6 +1,6 @@ # Backstage App -If you want to get setup quickly with your own Backstage project you can create a Backstage App. +If you want to get set up quickly with your own Backstage project you can create a Backstage App. A Backstage App is a monorepo setup with `lerna` that includes everything you need to run Backstage in your own environment. From f380f1bdf18531aab4237f8b61fb77f7b15de81d Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Fri, 3 Apr 2020 14:52:21 +0200 Subject: [PATCH 05/58] More comments --- docs/getting-started/create-an-app.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/docs/getting-started/create-an-app.md b/docs/getting-started/create-an-app.md index afba3b4e7b..703d1d59a5 100644 --- a/docs/getting-started/create-an-app.md +++ b/docs/getting-started/create-an-app.md @@ -1,24 +1,19 @@ # Backstage App -If you want to get set up quickly with your own Backstage project you can create a Backstage App. +To get set up quickly with your own Backstage project you can create a Backstage App. A Backstage App is a monorepo setup with `lerna` that includes everything you need to run Backstage in your own environment. ## Create an app -If you have [`npx`](https://github.com/npm/npx) installed simply run: +To create a Backstage app, you will need to have [NodeJS](https://nodejs.org/en/download/) Active LTS Release installed (currently v12). + +With `npx`: ```bash npx @backstage/cli create-app ``` -Or with `yarn`: - -```bash -yarn add --dev @backstage/cli -yarn run backstage-cli create-app -``` - This will create a new Backstage App inside the current folder. The name of the app-folder is the name that was provided when prompted.

From 32072ad4295a804c389ec09c18aa705589fc3024 Mon Sep 17 00:00:00 2001 From: Paul Marbach Date: Fri, 3 Apr 2020 11:50:49 -0400 Subject: [PATCH 06/58] chore: use eslint-config-oss --- .eslintrc.js | 17 ++++------------- package.json | 2 +- scripts/copyright.js | 15 --------------- yarn.lock | 42 ++++++++++++++---------------------------- 4 files changed, 19 insertions(+), 57 deletions(-) delete mode 100644 scripts/copyright.js diff --git a/.eslintrc.js b/.eslintrc.js index 969b6d7d5e..a8876a1510 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,15 +1,6 @@ -const path = require('path'); -const base = require('@backstage/cli/config/eslint'); - module.exports = { - ...base, - rules: { - ...base.rules, - 'notice/notice': [ - 'error', - { - templateFile: path.resolve(__dirname, 'scripts/copyright.js'), - }, - ], - }, + extends: [ + require.resolve('@backstage/cli/config/eslint.js'), + '@spotify/eslint-config-oss', + ], }; diff --git a/package.json b/package.json index 42d83cb254..a7ad611eea 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ }, "version": "1.0.0", "devDependencies": { + "@spotify/eslint-config-oss": "^1.0.1", "cross-env": "^7.0.0", - "eslint-plugin-notice": "^0.8.9", "husky": "^4.2.3", "lerna": "^3.20.2", "lint-staged": "^10.1.0", diff --git a/scripts/copyright.js b/scripts/copyright.js deleted file mode 100644 index 4376d55847..0000000000 --- a/scripts/copyright.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright <%= YEAR %> 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. - */ diff --git a/yarn.lock b/yarn.lock index 78d92bfda5..77f3d84299 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2783,6 +2783,13 @@ resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-6.1.0.tgz#b48d2764049d56a7d83a95709ec1e6733cb19f2a" integrity sha512-oxR3OBBrms09Ih6yPrqcaeKgwchdw9XgRvKsF6x6uPiMy0OVYald/+GkBtyQy+IChD14WStV/XosqNxEZeTJ4Q== +"@spotify/eslint-config-oss@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@spotify/eslint-config-oss/-/eslint-config-oss-1.0.1.tgz#01a95517e05063487c8e06b0b95cbdda33014a2a" + integrity sha512-G6eVEsp5WnvCglI9uhzhSeUnsKdpJ5gOLyhdZBEtqt8+MdpQSDECIfnkI8mV06dQ8FKtbqVd2NiMbkCC/gwrFQ== + dependencies: + eslint-plugin-notice "^0.8.9" + "@spotify/eslint-config-react@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-6.0.0.tgz#9cfc88362c7ffcd14e4dde73c196d1bc8583051d" @@ -6676,14 +6683,6 @@ cross-env@^7.0.0: dependencies: cross-spawn "^7.0.1" -cross-fetch@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c" - integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw== - dependencies: - node-fetch "2.6.0" - whatwg-fetch "3.0.0" - cross-spawn-promise@^0.10.1: version "0.10.2" resolved "https://registry.npmjs.org/cross-spawn-promise/-/cross-spawn-promise-0.10.2.tgz#0e6338149caf53a6d557ac5c65efb3086d8704ac" @@ -11207,14 +11206,6 @@ jest-environment-node@^25.1.0: jest-mock "^25.1.0" jest-util "^25.1.0" -jest-fetch-mock@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" - integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== - dependencies: - cross-fetch "^3.0.4" - promise-polyfill "^8.1.3" - jest-get-type@^24.9.0: version "24.9.0" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" @@ -13520,11 +13511,6 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@2.6.0, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -13533,6 +13519,11 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-forge@0.9.0: version "0.9.0" resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" @@ -15688,11 +15679,6 @@ promise-inflight@^1.0.1, promise-inflight@~1.0.1: resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-polyfill@^8.1.3: - version "8.1.3" - resolved "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" - integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== - promise-retry@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" @@ -16861,7 +16847,7 @@ request@^2.85.0, request@^2.87.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -"request@github:cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16": +request@cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16: version "2.88.1" resolved "https://codeload.github.com/cypress-io/request/tar.gz/b5af0d1fa47eec97ba980cde90a13e69a2afcd16" dependencies: @@ -19639,7 +19625,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== From 8f8e3eee964feaaedec70d97807beee0446ce87a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 4 Apr 2020 09:16:05 +0200 Subject: [PATCH 07/58] github/workflows: trigger on default pull_request event types --- .github/workflows/cli.yml | 1 - .github/workflows/frontend.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index 1a57cc9083..d571703294 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -6,7 +6,6 @@ on: - '.github/workflows/cli.yml' - 'packages/cli/**' - 'packages/core/**' - types: [opened, reopened, edited, synchronize] jobs: build: diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml index 37aa16deb3..15fb2b1fc7 100644 --- a/.github/workflows/frontend.yml +++ b/.github/workflows/frontend.yml @@ -2,7 +2,6 @@ name: Frontend CI on: pull_request: - types: [opened, reopened, edited, synchronize] jobs: build: From 6e3d0ed52383afa60e5dec0986f01c79cbe6eb03 Mon Sep 17 00:00:00 2001 From: Kat Zhou <61153904+katz95@users.noreply.github.com> Date: Sat, 4 Apr 2020 20:14:54 +0200 Subject: [PATCH 08/58] Create ux-component_template.md Template for designers to request for UX components to be added to the Backstage Storybook. --- .../ISSUE_TEMPLATE/ux-component_template.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/ux-component_template.md diff --git a/.github/ISSUE_TEMPLATE/ux-component_template.md b/.github/ISSUE_TEMPLATE/ux-component_template.md new file mode 100644 index 0000000000..e24fcb91a3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/ux-component_template.md @@ -0,0 +1,18 @@ +## 🗒 General + + + +## 💻 Usage + + +## 📐 Specs + + + +## 🔮 Future + +- +- +- +- +- From 73e7f751b7a355288fb9750c5661eddb4f4968e2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 11:16:03 +0200 Subject: [PATCH 09/58] package: add test:all and lint:all --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index a7ad611eea..6b15b4cfc0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ "bundle": "yarn build && yarn workspace example-app bundle", "build": "lerna run build", "test": "yarn build && lerna run test --since origin/master -- --coverage", + "test:all": "yarn build && lerna run test -- --coverage", "lint": "lerna run lint --since origin/master --", + "lint:all": "lerna run lint --", "docker-build": "yarn bundle && docker build . -t spotify/backstage", "create-plugin": "backstage-cli create-plugin", "release": "if [ \"$(git symbolic-ref --short HEAD)\" = master ]; then echo \"don't try to release master\"; exit 1; else lerna version --no-push; fi", From 6a6074bedd7198d4e1e04c8319f0bea9e1ed03d5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 11:07:24 +0200 Subject: [PATCH 10/58] cli/config/eslint: add import and monorepo lint rules to avoid bad imports and missing deps --- packages/cli/config/eslint.js | 30 +++++++++++++++- packages/cli/package.json | 2 ++ yarn.lock | 66 ++++++++++++++++++++++++++++++++++- 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/packages/cli/config/eslint.js b/packages/cli/config/eslint.js index 32d1e220f7..81941b6fad 100644 --- a/packages/cli/config/eslint.js +++ b/packages/cli/config/eslint.js @@ -23,9 +23,10 @@ module.exports = { 'prettier/react', 'prettier/@typescript-eslint', 'plugin:jest/recommended', + 'plugin:monorepo/recommended', ], parser: '@typescript-eslint/parser', - plugins: ['notice'], + plugins: ['notice', 'import'], env: { jest: true, }, @@ -39,6 +40,18 @@ module.exports = { }, }, ignorePatterns: ['**/dist/**', '**/build/**'], + rules: { + 'import/no-duplicates': 'warn', + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: false, + optionalDependencies: true, + peerDependencies: true, + bundledDependencies: true, + }, + ], + }, overrides: [ { files: ['**/*.ts?(x)'], @@ -47,5 +60,20 @@ module.exports = { 'react/prop-types': 0, }, }, + { + files: ['**/*.test.*', '**/src/setupTests.*', '**/src/testUtils/**'], + rules: { + // Tests are allowed to import dev dependencies + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + optionalDependencies: true, + peerDependencies: true, + bundledDependencies: true, + }, + ], + }, + }, ], }; diff --git a/packages/cli/package.json b/packages/cli/package.json index 718867266f..46a0b0ce50 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -55,6 +55,8 @@ "chokidar": "^3.3.1", "commander": "^4.1.1", "dashify": "^2.0.0", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-monorepo": "^0.2.1", "fork-ts-checker-webpack-plugin": "^4.0.5", "fs-extra": "^8.1.0", "handlebars": "^4.7.3", diff --git a/yarn.lock b/yarn.lock index 77f3d84299..3cf6b85c31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7433,7 +7433,7 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" -dir-glob@^2.2.2: +dir-glob@^2.0.0, dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== @@ -7978,6 +7978,14 @@ eslint-loader@3.0.3: object-hash "^2.0.1" schema-utils "^2.6.1" +eslint-module-utils@^2.1.1: + version "2.6.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + eslint-module-utils@^2.4.1: version "2.5.2" resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" @@ -8018,6 +8026,24 @@ eslint-plugin-import@2.20.1: read-pkg-up "^2.0.0" resolve "^1.12.0" +eslint-plugin-import@^2.20.2: + version "2.20.2" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" + integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + eslint-plugin-jest@^23.6.0: version "23.8.2" resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz#6f28b41c67ef635f803ebd9e168f6b73858eb8d4" @@ -8040,6 +8066,19 @@ eslint-plugin-jsx-a11y@6.2.3, eslint-plugin-jsx-a11y@^6.2.1: has "^1.0.3" jsx-ast-utils "^2.2.1" +eslint-plugin-monorepo@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.2.1.tgz#96cfc4af241077675f40d7017377897fb8ea537b" + integrity sha512-82JaAjuajVAsDT+pMvdt275H6F55H3MEofaMZbJurGqfXpPDT4eayTgYyyjfd1XR8VD1S+ORbuHCULnSqNyD9g== + dependencies: + eslint-module-utils "^2.1.1" + get-monorepo-packages "^1.1.0" + globby "^7.1.1" + load-json-file "^4.0.0" + minimatch "^3.0.4" + parse-package-name "^0.1.0" + path-is-inside "^1.0.2" + eslint-plugin-notice@^0.8.9: version "0.8.9" resolved "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-0.8.9.tgz#b3b55ba218b36a01fd4de998f68c66a8bf238a82" @@ -9122,6 +9161,14 @@ get-caller-file@^2.0.1: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-monorepo-packages@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/get-monorepo-packages/-/get-monorepo-packages-1.2.0.tgz#3eee88d30b11a5f65955dec6ae331958b2a168e4" + integrity sha512-aDP6tH+eM3EuVSp3YyCutOcFS4Y9AhRRH9FAd+cjtR/g63Hx+DCXdKoP1ViRPUJz5wm+BOEXB4FhoffGHxJ7jQ== + dependencies: + globby "^7.1.1" + load-json-file "^4.0.0" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -9447,6 +9494,18 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + globby@^9.2.0: version "9.2.0" resolved "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -14547,6 +14606,11 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" +parse-package-name@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/parse-package-name/-/parse-package-name-0.1.0.tgz#3f44dd838feb4c2be4bf318bae4477d7706bade4" + integrity sha1-P0Tdg4/rTCvkvzGLrkR313BrreQ= + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" From 2fa455bcd0bd80fc38339a5b54e4050fc8e850e0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 14:08:43 +0200 Subject: [PATCH 11/58] packages/cli: fix dependencies --- packages/cli/package.json | 6 +++++- yarn.lock | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 46a0b0ce50..f1ca54ca1c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -39,7 +39,6 @@ "@types/webpack-dev-server": "^3.10.0", "del": "^5.1.0", "nodemon": "^2.0.2", - "tar": "^6.0.1", "ts-node": "^8.6.2" }, "bin": { @@ -52,6 +51,7 @@ "@rollup/plugin-json": "^4.0.2", "@rollup/plugin-node-resolve": "^7.1.1", "@spotify/web-scripts": "^6.0.0", + "chalk": "^4.0.0", "chokidar": "^3.3.1", "commander": "^4.1.1", "dashify": "^2.0.0", @@ -72,10 +72,14 @@ "rollup-plugin-peer-deps-external": "^2.2.2", "rollup-plugin-postcss": "^2.5.0", "rollup-plugin-typescript2": "^0.26.0", + "tar": "^6.0.1", "ts-loader": "^6.2.1", "webpack": "^4.41.6", "webpack-dev-server": "^3.10.3" }, + "peerDependencies": { + "react": "^16.0.0" + }, "files": [ "templates", "config", diff --git a/yarn.lock b/yarn.lock index 3cf6b85c31..ae5f9823f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5830,6 +5830,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + change-emitter@^0.1.2: version "0.1.6" resolved "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" From acdea56c7fdd8fe165fecef0b9837ccdd23becd6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 14:09:34 +0200 Subject: [PATCH 12/58] packages/core: fix dependencies and imports --- packages/core/jest.config.ts | 20 ------------------- packages/core/package.json | 4 +++- .../src/layout/HeaderLabel/HeaderLabel.tsx | 3 +-- .../core/src/layout/InfoCard/BottomLink.tsx | 17 ++++++++++------ .../core/{jest.setup.ts => src/setupTests.ts} | 0 packages/core/src/testUtils/index.js | 2 +- yarn.lock | 4 ++-- 7 files changed, 18 insertions(+), 32 deletions(-) delete mode 100644 packages/core/jest.config.ts rename packages/core/{jest.setup.ts => src/setupTests.ts} (100%) diff --git a/packages/core/jest.config.ts b/packages/core/jest.config.ts deleted file mode 100644 index 2e584f12dc..0000000000 --- a/packages/core/jest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ - -module.exports = { - ...require('@spotify/web-scripts/config/jest.config.js'), - setupFilesAfterEnv: ['../jest.setup.ts'], -}; diff --git a/packages/core/package.json b/packages/core/package.json index dbac96cf02..897d828b8e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -31,6 +31,8 @@ "@types/jest": "^24.0.0", "@types/node": "^12.0.0", "classnames": "^2.2.6", + "clsx": "^1.1.0", + "prop-types": "^15.7.2", "rc-progress": "^2.5.2", "react": "^16.12.0", "react-addons-text-content": "0.0.4", @@ -44,6 +46,6 @@ "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", - "prop-types": "^15.7.2" + "react-router": "^5.1.2" } } diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx index 4349399194..56fcd01152 100644 --- a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx +++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx @@ -14,9 +14,8 @@ * limitations under the License. */ +import { Link, makeStyles, Typography } from '@material-ui/core'; import React, { FC } from 'react'; -import { Typography, makeStyles } from '@material-ui/core'; -import { Link } from '@material-ui/core'; import { BackstageTheme } from '../../theme/theme'; const useStyles = makeStyles(theme => ({ diff --git a/packages/core/src/layout/InfoCard/BottomLink.tsx b/packages/core/src/layout/InfoCard/BottomLink.tsx index bf82f6cd11..12eabbe753 100644 --- a/packages/core/src/layout/InfoCard/BottomLink.tsx +++ b/packages/core/src/layout/InfoCard/BottomLink.tsx @@ -14,13 +14,18 @@ * limitations under the License. */ -import React, { FC } from 'react'; -import { Link } from '@material-ui/core'; -import { Divider, ListItemText, makeStyles } from '@material-ui/core'; -import { ListItem, ListItemIcon } from '@material-ui/core'; -import ArrowIcon from '@material-ui/icons/ArrowForward'; -import grey from '@material-ui/core/colors/grey'; +import { + Divider, + Link, + ListItem, + ListItemIcon, + ListItemText, + makeStyles, +} from '@material-ui/core'; import Box from '@material-ui/core/Box'; +import grey from '@material-ui/core/colors/grey'; +import ArrowIcon from '@material-ui/icons/ArrowForward'; +import React, { FC } from 'react'; import { BackstageTheme } from '../../theme/theme'; const useStyles = makeStyles(theme => ({ diff --git a/packages/core/jest.setup.ts b/packages/core/src/setupTests.ts similarity index 100% rename from packages/core/jest.setup.ts rename to packages/core/src/setupTests.ts diff --git a/packages/core/src/testUtils/index.js b/packages/core/src/testUtils/index.js index a0eab3e72b..611633dcde 100644 --- a/packages/core/src/testUtils/index.js +++ b/packages/core/src/testUtils/index.js @@ -15,7 +15,7 @@ */ import React from 'react'; -import { ThemeProvider } from '@material-ui/styles'; +import { ThemeProvider } from '@material-ui/core'; import { MemoryRouter } from 'react-router'; import { Route } from 'react-router-dom'; diff --git a/yarn.lock b/yarn.lock index ae5f9823f6..402e134b3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6110,7 +6110,7 @@ clone@^1.0.2: resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clsx@^1.0.2, clsx@^1.0.4: +clsx@^1.0.2, clsx@^1.0.4, clsx@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702" integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA== @@ -16293,7 +16293,7 @@ react-router-dom@^5.1.2: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.1.2: +react-router@5.1.2, react-router@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/react-router/-/react-router-5.1.2.tgz#6ea51d789cb36a6be1ba5f7c0d48dd9e817d3418" integrity sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A== From 04f5aa3763d901ce7427855cbe48ac218de37e85 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 14:16:35 +0200 Subject: [PATCH 13/58] packages/app: fix deps and update cypress lint rules --- packages/app/cypress/.eslintrc.json | 9 +++++++++ packages/app/package.json | 1 + 2 files changed, 10 insertions(+) diff --git a/packages/app/cypress/.eslintrc.json b/packages/app/cypress/.eslintrc.json index a467608916..2b3a458b95 100644 --- a/packages/app/cypress/.eslintrc.json +++ b/packages/app/cypress/.eslintrc.json @@ -7,6 +7,15 @@ { "assertFunctionNames": ["expect", "cy.contains"] } + ], + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": true, + "optionalDependencies": true, + "peerDependencies": true, + "bundledDependencies": true + } ] } } diff --git a/packages/app/package.json b/packages/app/package.json index d0c8bfb123..0b7db7ae41 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -18,6 +18,7 @@ "@types/react-router-dom": "^5.1.3", "@types/zen-observable": "^0.8.0", "cross-env": "^7.0.0", + "prop-types": "^15.7.2", "react": "^16.12.0", "react-dom": "^16.12.0", "react-router-dom": "^5.1.2", From 3d706b9c7ae8c0f1f198a35bb667353dcd6e6726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sun, 5 Apr 2020 15:43:56 +0200 Subject: [PATCH 14/58] Add missing fields to new UX template --- .github/ISSUE_TEMPLATE/ux-component_template.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/ux-component_template.md b/.github/ISSUE_TEMPLATE/ux-component_template.md index e24fcb91a3..6043e756ce 100644 --- a/.github/ISSUE_TEMPLATE/ux-component_template.md +++ b/.github/ISSUE_TEMPLATE/ux-component_template.md @@ -1,3 +1,8 @@ +--- +name: 'UX Component' +about: 'For designers to request for UX components to be added to the Backstage Storybook.' +--- + ## 🗒 General From 44a959edc65c5ee68f1203ae2f4e770ec550f259 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sun, 5 Apr 2020 15:45:14 +0200 Subject: [PATCH 15/58] Update ux-component_template.md --- .github/ISSUE_TEMPLATE/ux-component_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/ux-component_template.md b/.github/ISSUE_TEMPLATE/ux-component_template.md index 6043e756ce..9bca38c767 100644 --- a/.github/ISSUE_TEMPLATE/ux-component_template.md +++ b/.github/ISSUE_TEMPLATE/ux-component_template.md @@ -1,6 +1,6 @@ --- name: 'UX Component' -about: 'For designers to request for UX components to be added to the Backstage Storybook.' +about: 'For designers to request UX components to be added to the Backstage Storybook.' --- ## 🗒 General From 48e2dc7dfd0953b33cfcc18116a4f99f817c0acf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 16:00:46 +0200 Subject: [PATCH 16/58] packages/cli: add missing react-use dep to plugin template --- packages/cli/templates/default-plugin/package.json.hbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index f48b37fbc7..dc1500944a 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -27,6 +27,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", "react": "16.13.1", - "react-dom": "16.13.1" + "react-dom": "16.13.1", + "react-use": "^13.0.0" } } From 682871fdbc6bb146c1278b5483eca2067bbf5c2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sun, 5 Apr 2020 16:26:21 +0200 Subject: [PATCH 17/58] Update ux-component_template.md --- .github/ISSUE_TEMPLATE/ux-component_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/ux-component_template.md b/.github/ISSUE_TEMPLATE/ux-component_template.md index 9bca38c767..217d0c89ee 100644 --- a/.github/ISSUE_TEMPLATE/ux-component_template.md +++ b/.github/ISSUE_TEMPLATE/ux-component_template.md @@ -1,6 +1,6 @@ --- name: 'UX Component' -about: 'For designers to request UX components to be added to the Backstage Storybook.' +about: 'For designers to request UX components to be added to the Backstage Storybook' --- ## 🗒 General From 7002aa568c04ea6cbf3ac624c35d9d1b948b1e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sun, 5 Apr 2020 17:08:40 +0200 Subject: [PATCH 18/58] Update FAQ.md --- docs/FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 5787a6a1f7..c79d9c1f60 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -42,5 +42,5 @@ That being said, in [Phase 2](https://github.com/spotify/backstage#project-roadm ## Q: My company doesn't have thousands of developers. Is Backstage overkill? -Sure, having something like Backstage gets more important as the number of developers in your company grows. One of the core reasons to adopt Backstage is to help standardise how software is built at your company. Setting guidelines and deciding on standards is easier when your company is smaller. +Not really. Sure, having something like Backstage gets more important as the number of developers in your company grows. One of the core reasons to adopt Backstage is to help standardise how software is built at your company. Setting guidelines and deciding on standards is easier when your company is smaller. From 98fb97717ddfaf21447cf2d8ee42f92a9dd5a9b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sun, 5 Apr 2020 22:25:54 +0200 Subject: [PATCH 19/58] Add Storybook item for HorizontalScrollGrid (#475) * Add Storybook item for HorizontalScrollGrid * Add Lifecycle's as well * Remove value in bool prop * Update index.ts * Fixed comments --- .../HorizontalScrollGrid.stories.tsx | 37 +++++++++++++++++++ .../Lifecycle/LifecycleAlpha.stories.tsx | 33 +++++++++++++++++ .../Lifecycle/LifecycleBeta.stories.tsx | 33 +++++++++++++++++ packages/core/src/index.ts | 1 + 4 files changed, 104 insertions(+) create mode 100644 packages/core/src/components/HorizontalScrollGrid.stories.tsx create mode 100644 packages/core/src/components/Lifecycle/LifecycleAlpha.stories.tsx create mode 100644 packages/core/src/components/Lifecycle/LifecycleBeta.stories.tsx diff --git a/packages/core/src/components/HorizontalScrollGrid.stories.tsx b/packages/core/src/components/HorizontalScrollGrid.stories.tsx new file mode 100644 index 0000000000..7ab3efd524 --- /dev/null +++ b/packages/core/src/components/HorizontalScrollGrid.stories.tsx @@ -0,0 +1,37 @@ +/* + * 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 React from 'react'; +import HorizontalScrollGrid from './HorizontalScrollGrid'; + +const cardContentStyle = { height: 0, padding: 150, margin: 20 }; +const containerStyle = { width: 800, height: 400, margin: 20 }; +const opacityArray = [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]; + +export default { + title: 'HorizontalScrollGrid', + component: HorizontalScrollGrid, +}; + +export const Default = () => ( +

+ + {opacityArray.map(element => { + const style = { backgroundColor: `rgba(0, 185, 151, ${element})` }; + return
; + })} + +
+); diff --git a/packages/core/src/components/Lifecycle/LifecycleAlpha.stories.tsx b/packages/core/src/components/Lifecycle/LifecycleAlpha.stories.tsx new file mode 100644 index 0000000000..1b044fcd5f --- /dev/null +++ b/packages/core/src/components/Lifecycle/LifecycleAlpha.stories.tsx @@ -0,0 +1,33 @@ +/* + * 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 React from 'react'; +import { AlphaLabel } from './Lifecycle'; + +export default { + title: 'Alpha Lifecycle', + component: AlphaLabel, +}; + +export const Default = () => ( + <> + This feature is in + +); +export const Shorthand = () => ( + <> + This feature is in + +); diff --git a/packages/core/src/components/Lifecycle/LifecycleBeta.stories.tsx b/packages/core/src/components/Lifecycle/LifecycleBeta.stories.tsx new file mode 100644 index 0000000000..b74171b5ea --- /dev/null +++ b/packages/core/src/components/Lifecycle/LifecycleBeta.stories.tsx @@ -0,0 +1,33 @@ +/* + * 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 React from 'react'; +import { BetaLabel } from './Lifecycle'; + +export default { + title: 'Beta Lifecycle', + component: BetaLabel, +}; + +export const Default = () => ( + <> + This feature is in + +); +export const Shorthand = () => ( + <> + This feature is in + +); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 33054ae81c..73b0e33ddd 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -32,6 +32,7 @@ export { default as HorizontalScrollGrid } from './components/HorizontalScrollGr export { default as ProgressCard } from './components/ProgressCard'; export { default as CircleProgress } from './components/CircleProgress'; export { default as Progress } from './components/Progress'; +export { AlphaLabel, BetaLabel } from './components/Lifecycle'; export { default as SupportButton } from './components/SupportButton'; export { default as SortableTable } from './components/SortableTable'; export { FeatureCalloutCircular } from './components/FeatureDiscovery/FeatureCalloutCircular'; From eed88be2ba2b3b2f8abfd9230462810f1ca45228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Mon, 6 Apr 2020 08:18:05 +0200 Subject: [PATCH 20/58] Make link to Discord more prominent (#480) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f884b1881b..1733bfbe95 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Backstage is an open platform for building developer portals. The philosophy behind Backstage is simple: Don't expose your engineers to the full complexity of your infrastructure tooling. Engineers should be shipping code — not figuring out a whole new toolset every time they want to implement the basics. Backstage allows you add "stuff" (tooling, services, features, etc.) by adding a plugin, instead of building a new tool. This saves you work and avoids the need of your team to learn how to use and support yet another tool. -For more information go to [backstage.io](https://backstage.io) +For more information go to [backstage.io](https://backstage.io) or join our [Discord chatroom](https://discord.gg/EBHEGzX). ## What problem does Backstage solve? @@ -84,7 +84,7 @@ For more complex development environment configuration, see the ## Community -- [Discord chat](https://discord.gg/MUpMjP2) - Get support or discuss the project +- [Discord chatroom](https://discord.gg/MUpMjP2) - Get support or discuss the project - [Good First Issues](https://github.com/spotify/backstage/labels/good%20first%20issue) - Start here if you want to contribute - [RFCs](https://github.com/spotify/backstage/labels/rfc) - Help shape the technical direction - [FAQ](docs/FAQ.md) - Frequently Asked Questions From 1ba27fb5410d1cbcc7b0f4b3c4e65664e66d2d22 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Apr 2020 12:19:48 +0200 Subject: [PATCH 21/58] dockerfile: add some instructions on how to run --- Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dockerfile b/Dockerfile index e20a74723a..5d536de268 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,10 @@ FROM nginx:mainline +# This dockerfile requires the app to be built on the host first, as it +# simply copies in the build output into the image. + +# The safest way to build this image is to use `yarn docker-build` + COPY packages/app/build /usr/share/nginx/html COPY docker/default.conf.template /etc/nginx/conf.d/default.conf.template COPY docker/run.sh /usr/local/bin/run.sh From f78a3bd9a1bc28903191093ac61945622a987195 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 15:21:12 +0200 Subject: [PATCH 22/58] packages/cli: move typescript build config to tsconfig --- packages/cli/package.json | 2 +- packages/cli/tsconfig.json | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index f1ca54ca1c..a430cc851c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -19,7 +19,7 @@ "main": "dist", "scripts": { "exec": "npx ts-node ./src", - "build": "backstage-cli build-cache -- tsc --outDir dist --noEmit false --module CommonJS", + "build": "backstage-cli build-cache -- tsc", "lint": "backstage-cli lint", "test": "backstage-cli test", "start": "nodemon ." diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 84b9319b94..e30150dda7 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -1,7 +1,9 @@ { - "extends": "@spotify/web-scripts/config/tsconfig.json", + "extends": "../../tsconfig.json", "include": ["src"], "compilerOptions": { + "outDir": "dist", + "module": "CommonJS", "baseUrl": "src", "paths": { "*": ["src/*"] From 38a4b96bd91d5e885ad7eb91b2a075c020e0d3a0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 15:22:00 +0200 Subject: [PATCH 23/58] packages/core/icons: fix circular dependency --- packages/core/src/icons/icons.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/icons/icons.tsx b/packages/core/src/icons/icons.tsx index a588a4a2a1..454a10c264 100644 --- a/packages/core/src/icons/icons.tsx +++ b/packages/core/src/icons/icons.tsx @@ -18,7 +18,7 @@ import { SvgIconProps } from '@material-ui/core'; import PeopleIcon from '@material-ui/icons/People'; import PersonIcon from '@material-ui/icons/Person'; import React, { FC } from 'react'; -import { useApp } from '../api'; +import { useApp } from '../api/app/AppContext'; import { IconComponent, SystemIconKey, SystemIcons } from './types'; export const defaultSystemIcons: SystemIcons = { From 41dff573c60a7c12f736273159160f6e458d5853 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 15:23:47 +0200 Subject: [PATCH 24/58] packages/cli/commands/plugin: make package dependencies external too --- packages/cli/src/commands/plugin/rollup.config.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/plugin/rollup.config.ts b/packages/cli/src/commands/plugin/rollup.config.ts index fc4b5e92ef..ec492d56a4 100644 --- a/packages/cli/src/commands/plugin/rollup.config.ts +++ b/packages/cli/src/commands/plugin/rollup.config.ts @@ -30,7 +30,9 @@ export default { format: 'cjs', }, plugins: [ - peerDepsExternal(), + peerDepsExternal({ + includeDependencies: true, + }), resolve({ mainFields: ['browser', 'module', 'main'], }), From 4e93e61e7ecdc7101656dac777624b30d78db6c6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 15:29:13 +0200 Subject: [PATCH 25/58] packages/cli/commands/plugin: include js in typescript compilation + exclude testUtils --- packages/cli/src/commands/plugin/rollup.config.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/plugin/rollup.config.ts b/packages/cli/src/commands/plugin/rollup.config.ts index ec492d56a4..ba2e95cb39 100644 --- a/packages/cli/src/commands/plugin/rollup.config.ts +++ b/packages/cli/src/commands/plugin/rollup.config.ts @@ -22,6 +22,7 @@ import postcss from 'rollup-plugin-postcss'; import imageFiles from 'rollup-plugin-image-files'; import json from '@rollup/plugin-json'; import { RollupWatchOptions } from 'rollup'; +import { paths } from '../../helpers/paths'; export default { input: 'src/index.ts', @@ -43,6 +44,9 @@ export default { postcss(), imageFiles(), json(), - typescript(), + typescript({ + include: `${paths.resolveTarget('src')}/**/*.{js,jsx,ts,tsx}`, + exclude: [paths.resolveTarget('src/testUtils/**')], + }), ], } as RollupWatchOptions; From 6bb0e0599899805c42a40d2ce9771b3a59c1c0b2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Apr 2020 15:29:36 +0200 Subject: [PATCH 26/58] packages/core: use plugin:build to build --- packages/core/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 897d828b8e..93c2e2fdf7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -16,11 +16,11 @@ "backstage" ], "license": "Apache-2.0", - "main": "dist/cjs/index.js", - "types": "dist/cjs/index.d.ts", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts", "scripts": { - "build:watch": "tsc --outDir dist/cjs --noEmit false --module CommonJS --watch", - "build": "backstage-cli build-cache -- tsc --outDir dist/cjs --noEmit false --module CommonJS", + "build:watch": "backstage-cli plugin:build --watch", + "build": "backstage-cli build-cache -- backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" }, From f8ac148f97205fb5e8d9be3328da12391e3ff0c4 Mon Sep 17 00:00:00 2001 From: Mateus Marquezini Date: Mon, 6 Apr 2020 09:05:14 -0300 Subject: [PATCH 27/58] Document how to contribute to Storybook (#482) * #448 added new section to contribute to storybook * #448 added linked file * #448 improvements in the contributing to storybook section * #448 improvements in the contributing to storybook section * #448 improvements in the contributing to storybook section * #448 improvements in the contributing to storybook section * #448 improvements in the contributing to storybook section --- README.md | 1 + .../contributing-to-storybook.md | 32 ++++++++++++++++++ docs/getting-started/running-storybook.png | Bin 0 -> 59252 bytes docs/getting-started/storybook-page.png | Bin 0 -> 51012 bytes 4 files changed, 33 insertions(+) create mode 100644 docs/getting-started/contributing-to-storybook.md create mode 100644 docs/getting-started/running-storybook.png create mode 100644 docs/getting-started/storybook-page.png diff --git a/README.md b/README.md index 2750d54e3c..ad486901b8 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ For more complex development environment configuration, see the - [Architecture](docs/architecture-terminology.md) - [API references](docs/reference/README.md) - [Storybook - UI components](http://storybook.backstage.io) ([WIP](https://github.com/spotify/backstage/milestone/9)) +- [Contributing to Storybook](docs/getting-started/contributing-to-storybook.md) - Using Backstage components (TODO) ## Community diff --git a/docs/getting-started/contributing-to-storybook.md b/docs/getting-started/contributing-to-storybook.md new file mode 100644 index 0000000000..1a7bf0f5ec --- /dev/null +++ b/docs/getting-started/contributing-to-storybook.md @@ -0,0 +1,32 @@ +# Contributing to Storybook + +## Creating a new Story + +> A Story basically represents a single visual state of a component. + +To create a new story, create a new file located alongside the component you want to document on Storybook. + +See below an example of the structure: + +``` +core +└── src + └── components + └── Progress + ├── Progress.tsx + └── Progress.stories.tsx +``` + +> _Note: make sure your component story file has the following format componentName.stories.tsx_ + +## Running locally + +Go to `packages/storybook`, run `yarn install` and install the dependencies, then run the following on your command line: `yarn start` + +![](running-storybook.png) + +_You should see a log like the image above._ + +If everything worked out, your server will be running on **port 6006**, go to your browser and navigate to `http://localhost:6006/`. You should be able to navigate and see the Storybook page. + +![](storybook-page.png) diff --git a/docs/getting-started/running-storybook.png b/docs/getting-started/running-storybook.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf1ded4b9016eba0f0dbb72db66fc0dd2cf7ec6 GIT binary patch literal 59252 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 literal 0 HcmV?d00001 diff --git a/docs/getting-started/storybook-page.png b/docs/getting-started/storybook-page.png new file mode 100644 index 0000000000000000000000000000000000000000..113f96e589b032acb5c677c0856acf348277a346 GIT binary patch literal 51012 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 AP5=M^ literal 0 HcmV?d00001 From 0d93dde6bac075a25b17b24074c209f8d2ebd9d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Mon, 6 Apr 2020 15:07:36 +0200 Subject: [PATCH 28/58] Storybook for ProgressCard (#477) * Storybook for ProgressCard * Update ProgressCard.stories.tsx * Fix import --- .../src/components/ProgressCard.stories.tsx | 80 +++++++++++++++++++ packages/core/src/components/ProgressCard.tsx | 21 ++--- 2 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 packages/core/src/components/ProgressCard.stories.tsx diff --git a/packages/core/src/components/ProgressCard.stories.tsx b/packages/core/src/components/ProgressCard.stories.tsx new file mode 100644 index 0000000000..9b99b5d621 --- /dev/null +++ b/packages/core/src/components/ProgressCard.stories.tsx @@ -0,0 +1,80 @@ +/* + * 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 React from 'react'; +import ProgressCard from './ProgressCard'; +import { Grid } from '@material-ui/core'; + +const linkInfo = { title: 'Go to XYZ Location', link: '#' }; + +export default { + title: 'Progress Card', + component: ProgressCard, +}; + +export const Default = () => ( + + + + + + + + + + + +); + +export const Subhead = () => ( + + + + + + + + + + + +); + +export const LinkInFooter = () => ( + + + + + + + + + + + +); diff --git a/packages/core/src/components/ProgressCard.tsx b/packages/core/src/components/ProgressCard.tsx index 6a3b87ba89..ef84c40499 100644 --- a/packages/core/src/components/ProgressCard.tsx +++ b/packages/core/src/components/ProgressCard.tsx @@ -18,15 +18,16 @@ import React, { FC } from 'react'; import { makeStyles } from '@material-ui/core'; import InfoCard from '../layout/InfoCard'; +import { Props as BottomLinkProps } from '../layout/InfoCard/BottomLink'; import CircleProgress from './CircleProgress'; type Props = { title: string; subheader?: string; variant?: string; - progress: number | string; - deepLink?: string | { title: string; link: string }; - gacontext?: string; + /** Progress in % specified as decimal, e.g. "0.23" */ + progress: number; + deepLink?: BottomLinkProps; }; const useStyles = makeStyles({ @@ -40,25 +41,15 @@ const ProgressCard: FC = props => { const classes = useStyles(props); const { title, subheader, progress, deepLink, variant } = props; - // TODO(freben): Make type more strict when InfoCard is written in TS - let link: any = undefined; - if (deepLink) { - if (typeof deepLink === 'string') { - link = { title: 'View more', link: deepLink }; - } else { - link = deepLink; - } - } - return (
- +
); From 28b576967cd54380a70f045b4eda06fc80d45b71 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Apr 2020 15:36:38 +0200 Subject: [PATCH 29/58] packages/cli: make src-relative imports work --- packages/cli/bin/backstage-cli | 48 +++++++++++++++++++++++++++++++ packages/cli/config/jest.js | 4 ++- packages/cli/package.json | 3 +- packages/cli/src/helpers/paths.ts | 16 ++++++++++- packages/cli/tsconfig.json | 9 ++---- yarn.lock | 17 ++++++++++- 6 files changed, 87 insertions(+), 10 deletions(-) diff --git a/packages/cli/bin/backstage-cli b/packages/cli/bin/backstage-cli index b7317db25b..a47851bf03 100755 --- a/packages/cli/bin/backstage-cli +++ b/packages/cli/bin/backstage-cli @@ -5,12 +5,60 @@ const path = require('path'); // Figure out whether we're running inside the backstage repo or as an installed dependency const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src')); if (!isLocal) { + // src-relative imports are a pain to get to work with plain tsc compilation, as the + // transpiled code will maintain the imports as they are in the source. Which means an + // import for `helpers/paths` will start like that in the output, which won't work in NodeJS. + // + // This is a solution for getting src-relative imports to work with typescript/node in + // the published package. We're using `module: "amd"` to ship the entire cli implementation + // in one file, and it also happens to generate correct module definition and import statements. + + // Minimal AMD implementation + const moduleFactories = {}; + const moduleCache = {}; + global.define = (name, deps, moduleFunc) => { + moduleFactories[name] = () => { + const exportsObj = {}; + const impls = deps.slice(2).map(dep => { + const factory = moduleFactories[dep]; + if (!factory) { + return require(dep); + } + if (!moduleCache[dep]) { + moduleCache[dep] = factory(); + } + return moduleCache[dep]; + }); + + moduleFunc(require, exportsObj, ...impls); + + return exportsObj; + }; + }; require('../dist'); + + // index module is the entrypoint + moduleFactories.index(); } else { + const tsConfigPath = path.resolve(__dirname, '../tsconfig.json'); + const { + baseUrl: relativeBaseUrl, + paths = {}, + } = require(tsConfigPath).compilerOptions; + const baseUrl = path.resolve(__dirname, '..', relativeBaseUrl); + + // Use tsconfig-paths to resolve src-relative paths during development + const cleanupPaths = require('tsconfig-paths').register({ baseUrl, paths }); + require('ts-node').register({ project: path.resolve(__dirname, '../tsconfig.json'), + compilerOptions: { + module: 'CommonJS', + }, transpileOnly: true, }); require('../src'); + + cleanupPaths(); } diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index e443ceec1b..055c3e73c5 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -24,7 +24,9 @@ if (fs.existsSync('jest.config.js')) { } else if (fs.existsSync('jest.config.ts')) { module.exports = require(path.resolve('jest.config.ts')); } else { - const extraOptions = {}; + const extraOptions = { + modulePaths: [''], + }; // Use src/setupTests.ts as the default location for configuring test env if (fs.existsSync('src/setupTests.ts')) { diff --git a/packages/cli/package.json b/packages/cli/package.json index a430cc851c..6b6f489575 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -39,7 +39,8 @@ "@types/webpack-dev-server": "^3.10.0", "del": "^5.1.0", "nodemon": "^2.0.2", - "ts-node": "^8.6.2" + "ts-node": "^8.6.2", + "tsconfig-paths": "^3.9.0" }, "bin": { "backstage-cli": "bin/backstage-cli" diff --git a/packages/cli/src/helpers/paths.ts b/packages/cli/src/helpers/paths.ts index f49bfa9689..746b3f6ea8 100644 --- a/packages/cli/src/helpers/paths.ts +++ b/packages/cli/src/helpers/paths.ts @@ -77,8 +77,22 @@ export function findRootPath(topPath: string): string { ); } +// Finds the root of the cli package itself +export function findOwnDir() { + // Known relative locations of package in dist/dev + const pathDist = '..'; + const pathDev = '../..'; + + // Check the closest dir first + const pkgInDist = resolvePath(__dirname, pathDist, 'package.json'); + const isDist = fs.pathExistsSync(pkgInDist); + + const path = isDist ? pathDist : pathDev; + return resolvePath(__dirname, path); +} + export function findPaths(): Paths { - const ownDir = resolvePath(__dirname, '../..'); + const ownDir = findOwnDir(); const targetDir = fs.realpathSync(process.cwd()); // We're not always running in a monorepo, so we lazy init this to only crash commands diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index e30150dda7..8c7fb90d47 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -2,11 +2,8 @@ "extends": "../../tsconfig.json", "include": ["src"], "compilerOptions": { - "outDir": "dist", - "module": "CommonJS", - "baseUrl": "src", - "paths": { - "*": ["src/*"] - } + "outFile": "dist/index.js", + "module": "amd", + "baseUrl": "src" } } diff --git a/yarn.lock b/yarn.lock index 402e134b3c..73c20c3a2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3657,6 +3657,11 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/mime@*": version "2.0.1" resolved "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" @@ -16919,7 +16924,7 @@ request@^2.85.0, request@^2.87.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -request@cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16: +"request@github:cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16": version "2.88.1" resolved "https://codeload.github.com/cypress-io/request/tar.gz/b5af0d1fa47eec97ba980cde90a13e69a2afcd16" dependencies: @@ -18987,6 +18992,16 @@ ts-pnp@1.1.6, ts-pnp@^1.1.2, ts-pnp@^1.1.6: resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@1.10.0: version "1.10.0" resolved "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" From d04453ecad66d470b2d297b69384d8b5fc5fcb94 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Apr 2020 15:40:21 +0200 Subject: [PATCH 30/58] packages/cli: use src-relative imports --- packages/cli/src/commands/app/build.ts | 2 +- packages/cli/src/commands/app/serve.ts | 4 ++-- packages/cli/src/commands/build-cache/cache.ts | 4 ++-- packages/cli/src/commands/build-cache/index.ts | 2 +- packages/cli/src/commands/build-cache/options.ts | 2 +- packages/cli/src/commands/create-app/createApp.ts | 4 ++-- packages/cli/src/commands/create-plugin/createPlugin.ts | 4 ++-- packages/cli/src/commands/lint.ts | 2 +- packages/cli/src/commands/plugin/rollup.config.ts | 2 +- packages/cli/src/commands/plugin/testCommand.ts | 2 +- packages/cli/src/commands/testCommand.ts | 4 ++-- packages/cli/src/commands/watch-deps/index.ts | 4 ++-- packages/cli/src/commands/watch-deps/packages.ts | 2 +- 13 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/cli/src/commands/app/build.ts b/packages/cli/src/commands/app/build.ts index 5dc623831e..d5a01d13a7 100644 --- a/packages/cli/src/commands/app/build.ts +++ b/packages/cli/src/commands/app/build.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { run } from '../../helpers/run'; +import { run } from 'helpers/run'; export default async () => { const args = ['build']; diff --git a/packages/cli/src/commands/app/serve.ts b/packages/cli/src/commands/app/serve.ts index 21241c99e3..25977850a3 100644 --- a/packages/cli/src/commands/app/serve.ts +++ b/packages/cli/src/commands/app/serve.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { run } from '../../helpers/run'; -import { watchDeps } from '../watch-deps'; +import { run } from 'helpers/run'; +import { watchDeps } from 'commands/watch-deps'; export default async () => { const args = ['start']; diff --git a/packages/cli/src/commands/build-cache/cache.ts b/packages/cli/src/commands/build-cache/cache.ts index 464071c95f..db0aa940ad 100644 --- a/packages/cli/src/commands/build-cache/cache.ts +++ b/packages/cli/src/commands/build-cache/cache.ts @@ -16,10 +16,10 @@ import fs from 'fs-extra'; import { resolve as resolvePath, relative as relativePath } from 'path'; -import { runPlain, runCheck } from '../../helpers/run'; +import { runPlain, runCheck } from 'helpers/run'; import { Options } from './options'; import { extractArchive, createArchive } from './archive'; -import { paths } from '../../helpers/paths'; +import { paths } from 'helpers/paths'; const INFO_FILE = '.backstage-build-cache'; diff --git a/packages/cli/src/commands/build-cache/index.ts b/packages/cli/src/commands/build-cache/index.ts index ab8984ecc3..70033097e5 100644 --- a/packages/cli/src/commands/build-cache/index.ts +++ b/packages/cli/src/commands/build-cache/index.ts @@ -15,7 +15,7 @@ */ import { Command } from 'commander'; -import { run } from '../../helpers/run'; +import { run } from 'helpers/run'; import { Cache } from './cache'; import { parseOptions } from './options'; diff --git a/packages/cli/src/commands/build-cache/options.ts b/packages/cli/src/commands/build-cache/options.ts index ae5404bb9f..523d5fc7e6 100644 --- a/packages/cli/src/commands/build-cache/options.ts +++ b/packages/cli/src/commands/build-cache/options.ts @@ -16,7 +16,7 @@ import { resolve as resolvePath } from 'path'; import { Command } from 'commander'; -import { paths } from '../../helpers/paths'; +import { paths } from 'helpers/paths'; const DEFAULT_MAX_ENTRIES = 10; diff --git a/packages/cli/src/commands/create-app/createApp.ts b/packages/cli/src/commands/create-app/createApp.ts index 03f571fed5..ddbbf8e4f2 100644 --- a/packages/cli/src/commands/create-app/createApp.ts +++ b/packages/cli/src/commands/create-app/createApp.ts @@ -21,8 +21,8 @@ import inquirer, { Answers, Question } from 'inquirer'; import { exec as execCb } from 'child_process'; import { resolve as resolvePath } from 'path'; import os from 'os'; -import { Task, templatingTask } from '../../helpers/tasks'; -import { paths } from '../../helpers/paths'; +import { Task, templatingTask } from 'helpers/tasks'; +import { paths } from 'helpers/paths'; const exec = promisify(execCb); async function checkExists(rootDir: string, name: string) { diff --git a/packages/cli/src/commands/create-plugin/createPlugin.ts b/packages/cli/src/commands/create-plugin/createPlugin.ts index 027a53f2b4..7f05519cd2 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.ts @@ -26,8 +26,8 @@ import { addCodeownersEntry, getCodeownersFilePath, } from './lib/codeowners'; -import { paths } from '../../helpers/paths'; -import { Task, templatingTask } from '../../helpers/tasks'; +import { paths } from 'helpers/paths'; +import { Task, templatingTask } from 'helpers/tasks'; const exec = promisify(execCb); async function checkExists(rootDir: string, id: string) { diff --git a/packages/cli/src/commands/lint.ts b/packages/cli/src/commands/lint.ts index 3fbc30f897..d1b5a361a4 100644 --- a/packages/cli/src/commands/lint.ts +++ b/packages/cli/src/commands/lint.ts @@ -15,7 +15,7 @@ */ import { Command } from 'commander'; -import { run } from '../helpers/run'; +import { run } from 'helpers/run'; export default async (cmd: Command) => { const args = ['lint', '--max-warnings=0', '--format=codeframe']; diff --git a/packages/cli/src/commands/plugin/rollup.config.ts b/packages/cli/src/commands/plugin/rollup.config.ts index ba2e95cb39..d1f251665f 100644 --- a/packages/cli/src/commands/plugin/rollup.config.ts +++ b/packages/cli/src/commands/plugin/rollup.config.ts @@ -22,7 +22,7 @@ import postcss from 'rollup-plugin-postcss'; import imageFiles from 'rollup-plugin-image-files'; import json from '@rollup/plugin-json'; import { RollupWatchOptions } from 'rollup'; -import { paths } from '../../helpers/paths'; +import { paths } from 'helpers/paths'; export default { input: 'src/index.ts', diff --git a/packages/cli/src/commands/plugin/testCommand.ts b/packages/cli/src/commands/plugin/testCommand.ts index 0bc35e13c1..a1c4572422 100644 --- a/packages/cli/src/commands/plugin/testCommand.ts +++ b/packages/cli/src/commands/plugin/testCommand.ts @@ -15,7 +15,7 @@ */ import { Command } from 'commander'; -import { run } from '../../helpers/run'; +import { run } from 'helpers/run'; export default async (cmd: Command) => { const args = ['test']; diff --git a/packages/cli/src/commands/testCommand.ts b/packages/cli/src/commands/testCommand.ts index 3fc87b158b..10a4fb54f3 100644 --- a/packages/cli/src/commands/testCommand.ts +++ b/packages/cli/src/commands/testCommand.ts @@ -15,8 +15,8 @@ */ import { Command } from 'commander'; -import { run } from '../helpers/run'; -import { paths } from '../helpers/paths'; +import { run } from 'helpers/run'; +import { paths } from 'helpers/paths'; export default async (cmd: Command) => { const args = ['test', '--config', paths.resolveOwn('config/jest.js')]; diff --git a/packages/cli/src/commands/watch-deps/index.ts b/packages/cli/src/commands/watch-deps/index.ts index 7ffa67ed7a..0c0141ef73 100644 --- a/packages/cli/src/commands/watch-deps/index.ts +++ b/packages/cli/src/commands/watch-deps/index.ts @@ -21,8 +21,8 @@ import { getPackageDeps } from './packages'; import { startWatcher, startPackageWatcher } from './watcher'; import { startCompiler } from './compiler'; import { startChild } from './child'; -import { waitForExit } from '../../helpers/run'; -import { paths } from '../../helpers/paths'; +import { waitForExit } from 'helpers/run'; +import { paths } from 'helpers/paths'; const PACKAGE_BLACKLIST = [ // We never want to watch for changes in the cli, but all packages will depend on it. diff --git a/packages/cli/src/commands/watch-deps/packages.ts b/packages/cli/src/commands/watch-deps/packages.ts index e80de3651d..f8ad935ec4 100644 --- a/packages/cli/src/commands/watch-deps/packages.ts +++ b/packages/cli/src/commands/watch-deps/packages.ts @@ -16,7 +16,7 @@ import fs from 'fs'; import { promisify } from 'util'; -import { paths } from '../../helpers/paths'; +import { paths } from 'helpers/paths'; const readFile = promisify(fs.readFile); From 5f79ec4112daf5466a44390e990fa7e37a03359d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Apr 2020 16:48:10 +0200 Subject: [PATCH 31/58] packages/cli: lazy-load commands to speed up cli boot time --- packages/cli/bin/backstage-cli | 32 +++++++++++++++++++------------ packages/cli/src/index.ts | 35 ++++++++++++++-------------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/packages/cli/bin/backstage-cli b/packages/cli/bin/backstage-cli index a47851bf03..b89395a452 100755 --- a/packages/cli/bin/backstage-cli +++ b/packages/cli/bin/backstage-cli @@ -12,25 +12,33 @@ if (!isLocal) { // This is a solution for getting src-relative imports to work with typescript/node in // the published package. We're using `module: "amd"` to ship the entire cli implementation // in one file, and it also happens to generate correct module definition and import statements. - // Minimal AMD implementation const moduleFactories = {}; const moduleCache = {}; global.define = (name, deps, moduleFunc) => { moduleFactories[name] = () => { const exportsObj = {}; - const impls = deps.slice(2).map(dep => { - const factory = moduleFactories[dep]; - if (!factory) { - return require(dep); - } - if (!moduleCache[dep]) { - moduleCache[dep] = factory(); - } - return moduleCache[dep]; - }); - moduleFunc(require, exportsObj, ...impls); + // require() that first searches for locally defined amd modules + const requireFunc = name => { + let factory = moduleFactories[name]; + if (!factory) { + // Check /index as well, to mirror nodejs resolution + const index = `${name}/index`; + if (!moduleFactories[index]) { + return require(name); + } + name = index; + factory = moduleFactories[name]; + } + if (!moduleCache[name]) { + moduleCache[name] = factory(); + } + return moduleCache[name]; + }; + const impls = deps.slice(2).map(requireFunc); + + moduleFunc(requireFunc, exportsObj, ...impls); return exportsObj; }; diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index cffc24d902..4811d34a7a 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -16,16 +16,6 @@ import program from 'commander'; import chalk from 'chalk'; -import createAppCommand from './commands/create-app/createApp'; -import createPluginCommand from './commands/create-plugin/createPlugin'; -import watch from './commands/watch-deps'; -import buildCache from './commands/build-cache'; -import lintCommand from './commands/lint'; -import testCommand from './commands/testCommand'; -import appBuild from './commands/app/build'; -import appServe from './commands/app/serve'; -import pluginBuild from './commands/plugin/build'; -import pluginServe from './commands/plugin/serve'; import { exitWithError } from './helpers/errors'; import { paths } from './helpers/paths'; @@ -37,51 +27,53 @@ const main = (argv: string[]) => { program .command('create-app') .description('Creates a new app in a new directory') - .action(actionHandler(createAppCommand)); + .action(actionHandler(() => require('commands/create-app/createApp'))); program .command('app:build') .description('Build an app for a production release') - .action(actionHandler(appBuild)); + .action(actionHandler(() => require('commands/app/build'))); program .command('app:serve') .description('Serve an app for local development') - .action(actionHandler(appServe)); + .action(actionHandler(() => require('commands/app/serve'))); program .command('create-plugin') .description('Creates a new plugin in the current repository') - .action(actionHandler(createPluginCommand)); + .action( + actionHandler(() => require('commands/create-plugin/createPlugin')), + ); program .command('plugin:build') .option('--watch', 'Enable watch mode') .description('Build a plugin') - .action(actionHandler(pluginBuild)); + .action(actionHandler(() => require('commands/plugin/build'))); program .command('plugin:serve') .description('Serves the dev/ folder of a plugin') - .action(actionHandler(pluginServe)); + .action(actionHandler(() => require('commands/plugin/serve'))); program .command('lint') .option('--fix', 'Attempt to automatically fix violations') .description('Lint a package') - .action(actionHandler(lintCommand)); + .action(actionHandler(() => require('commands/lint'))); program .command('test') .option('--watch', 'Enable watch mode') .option('--coverage', 'Report test coverage') .description('Run all tests for package') - .action(actionHandler(testCommand)); + .action(actionHandler(() => require('commands/testCommand'))); program .command('watch-deps') .description('Watch all dependencies while running another command') - .action(actionHandler(watch)); + .action(actionHandler(() => require('commands/watch-deps'))); program .command('build-cache') @@ -98,7 +90,7 @@ const main = (argv: string[]) => { 'Cache dir', '/node_modules/.cache/backstage-builds', ) - .action(actionHandler(buildCache)); + .action(actionHandler(() => require('commands/build-cache'))); program.on('command:*', () => { console.log(); @@ -119,10 +111,11 @@ const main = (argv: string[]) => { // Wraps an action function so that it always exits and handles errors function actionHandler( - actionFunc: (...args: T) => Promise, + actionRequireFunc: () => { default(...args: T): Promise }, ): (...args: T) => Promise { return async (...args: T) => { try { + const actionFunc = actionRequireFunc().default; await actionFunc(...args); process.exit(0); } catch (error) { From bc94014e03251d85c241649b5e65637d492f391b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Apr 2020 16:57:53 +0200 Subject: [PATCH 32/58] packages/cli: added version helper --- .../cli/src/commands/create-app/createApp.ts | 2 +- .../commands/create-plugin/createPlugin.ts | 6 ++--- packages/cli/src/helpers/version.ts | 26 +++++++++++++++++++ packages/cli/src/index.ts | 6 ++--- 4 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 packages/cli/src/helpers/version.ts diff --git a/packages/cli/src/commands/create-app/createApp.ts b/packages/cli/src/commands/create-app/createApp.ts index ddbbf8e4f2..826f9866d2 100644 --- a/packages/cli/src/commands/create-app/createApp.ts +++ b/packages/cli/src/commands/create-app/createApp.ts @@ -23,6 +23,7 @@ import { resolve as resolvePath } from 'path'; import os from 'os'; import { Task, templatingTask } from 'helpers/tasks'; import { paths } from 'helpers/paths'; +import { version } from 'helpers/version'; const exec = promisify(execCb); async function checkExists(rootDir: string, name: string) { @@ -108,7 +109,6 @@ export default async () => { const templateDir = paths.resolveOwn('templates/default-app'); const tempDir = resolvePath(os.tmpdir(), answers.name); const appDir = resolvePath(paths.targetDir, answers.name); - const version = require(paths.resolveOwn('package.json')).version; Task.log(); Task.log('Creating the app...'); diff --git a/packages/cli/src/commands/create-plugin/createPlugin.ts b/packages/cli/src/commands/create-plugin/createPlugin.ts index 7f05519cd2..7efb29d270 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.ts @@ -27,6 +27,7 @@ import { getCodeownersFilePath, } from './lib/codeowners'; import { paths } from 'helpers/paths'; +import { version } from 'helpers/version'; import { Task, templatingTask } from 'helpers/tasks'; const exec = promisify(execCb); @@ -86,7 +87,7 @@ const addExportStatement = async ( export async function addPluginDependencyToApp( rootDir: string, pluginName: string, - version: string, + versionStr: string, ) { const pluginPackage = `@backstage/plugin-${pluginName}`; const packageFilePath = 'packages/app/package.json'; @@ -103,7 +104,7 @@ export async function addPluginDependencyToApp( ); } - dependencies[pluginPackage] = `^${version}`; + dependencies[pluginPackage] = `^${versionStr}`; packageFileJson.dependencies = sortObjectByKeys(dependencies); const newContents = `${JSON.stringify(packageFileJson, null, 2)}\n`; @@ -223,7 +224,6 @@ export default async () => { const templateDir = paths.resolveOwn('templates/default-plugin'); const tempDir = resolvePath(os.tmpdir(), answers.id); const pluginDir = paths.resolveTargetRoot('plugins', answers.id); - const version = require(paths.resolveOwn('package.json')).version; const ownerIds = parseOwnerIds(answers.owner); Task.log(); diff --git a/packages/cli/src/helpers/version.ts b/packages/cli/src/helpers/version.ts new file mode 100644 index 0000000000..24734b87cc --- /dev/null +++ b/packages/cli/src/helpers/version.ts @@ -0,0 +1,26 @@ +/* + * 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 './paths'; + +export function findVersion() { + const pkgContent = fs.readFileSync(paths.resolveOwn('package.json'), 'utf8'); + return JSON.parse(pkgContent).version; +} + +export const version = findVersion(); +export const isDev = fs.pathExistsSync(paths.resolveOwn('src')); diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 4811d34a7a..ca39c1ac3b 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -16,12 +16,10 @@ import program from 'commander'; import chalk from 'chalk'; -import { exitWithError } from './helpers/errors'; -import { paths } from './helpers/paths'; +import { exitWithError } from 'helpers/errors'; +import { version } from 'helpers/version'; const main = (argv: string[]) => { - const version = require(paths.resolveOwn('package.json')).version; - program.name('backstage-cli').version(version); program From af882489e2d098377f9fe2dc41f97a41d8f4e246 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Apr 2020 17:04:11 +0200 Subject: [PATCH 33/58] packages/cli: add cli version to build-cache key --- packages/cli/src/commands/build-cache/cache.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/build-cache/cache.ts b/packages/cli/src/commands/build-cache/cache.ts index db0aa940ad..a6c51671f5 100644 --- a/packages/cli/src/commands/build-cache/cache.ts +++ b/packages/cli/src/commands/build-cache/cache.ts @@ -20,6 +20,7 @@ import { runPlain, runCheck } from 'helpers/run'; import { Options } from './options'; import { extractArchive, createArchive } from './archive'; import { paths } from 'helpers/paths'; +import { version, isDev } from 'helpers/version'; const INFO_FILE = '.backstage-build-cache'; @@ -74,7 +75,14 @@ export class Cache { static async readInputKey( inputPaths: string[], ): Promise { - const quotedInputPaths = inputPaths.map(input => `'${input}'`); + const allInputPaths = inputPaths.slice(); + + // If we're executing the cli inside the backstage repo, we add the cli src as cache key as well + if (isDev) { + allInputPaths.unshift(paths.ownDir); + } + + const quotedInputPaths = allInputPaths.map(input => `'${input}'`); // Make sure we don't have any uncommitted changes to the input, in that case we skip caching. const noChanges = await runCheck( @@ -90,7 +98,12 @@ export class Cache { const [, , sha] = output.split(/\s+/, 3); trees.push(sha); } - return trees; + + if (isDev) { + return trees; + } + // If we're executing as a dependency, use the version as a key + return [version, ...trees]; } constructor( From 98dea870e6d148caa1fb5b1ffc3f3466b4aec791 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 00:00:14 +0200 Subject: [PATCH 34/58] packages/cli: refactor build-cache to have a reusable withCache function --- .../cli/src/commands/build-cache/index.ts | 36 ++++++++++++------- .../cli/src/commands/build-cache/options.ts | 30 ++++++++++++---- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/packages/cli/src/commands/build-cache/index.ts b/packages/cli/src/commands/build-cache/index.ts index 70033097e5..fafc945907 100644 --- a/packages/cli/src/commands/build-cache/index.ts +++ b/packages/cli/src/commands/build-cache/index.ts @@ -17,24 +17,21 @@ import { Command } from 'commander'; import { run } from 'helpers/run'; import { Cache } from './cache'; -import { parseOptions } from './options'; +import { parseOptions, Options } from './options'; function print(msg: string) { process.stdout.write(`[build-cache] ${msg}\n`); } -/* - * The build-cache command is used to make builds a no-op if there are no changes to the package. - * It supports both local development where the output directory remains intact, as well as CI - * where the output directory is stored in a separate cache dir. - */ -export default async (cmd: Command, args: string[]) => { - const options = await parseOptions(cmd); - +// Wrap a build function with a cache, which won't call the build function on cache hit +export async function withCache( + options: Options, + buildFunc: () => Promise, +): Promise { const key = await Cache.readInputKey(options.inputs); if (!key) { print('input directory is dirty, skipping cache'); - await run(args[0], args.slice(1)); + await buildFunc(); return; } @@ -52,9 +49,22 @@ export default async (cmd: Command, args: string[]) => { } print('cache miss, need to build'); + await buildFunc(); - await run(args[0], args.slice(1)); - - print('caching build output'); await cacheResult.archive(options.output, options.maxCacheEntries); +} + +/* + * The build-cache command is used to make builds a no-op if there are no changes to the package. + * It supports both local development where the output directory remains intact, as well as CI + * where the output directory is stored in a separate cache dir. + */ +export default async (cmd: Command, args: string[]) => { + const options = await parseOptions(cmd); + + await withCache(options, async () => { + await run(args[0], args.slice(1)); + }); }; + +export * from './options'; diff --git a/packages/cli/src/commands/build-cache/options.ts b/packages/cli/src/commands/build-cache/options.ts index 523d5fc7e6..6903c01ddf 100644 --- a/packages/cli/src/commands/build-cache/options.ts +++ b/packages/cli/src/commands/build-cache/options.ts @@ -18,6 +18,7 @@ import { resolve as resolvePath } from 'path'; import { Command } from 'commander'; import { paths } from 'helpers/paths'; +const DEFAULT_CACHE_DIR = '/node_modules/.cache/backstage-builds'; const DEFAULT_MAX_ENTRIES = 10; export type Options = { @@ -27,19 +28,34 @@ export type Options = { maxCacheEntries: number; }; -export async function parseOptions(cmd: Command): Promise { - const argTransformer = (arg: string) => - resolvePath(arg.replace(//g, paths.targetRoot).replace(/'/g, '')); +function transformPath(path: string): string { + return resolvePath( + path.replace(//g, paths.targetRoot).replace(/'/g, ''), + ); +} - const inputs = cmd.input.map(argTransformer) as string[]; +export async function parseOptions(cmd: Command): Promise { + const inputs = cmd.input.map(transformPath) as string[]; if (inputs.length === 0) { - inputs.push(argTransformer('.')); + inputs.push(transformPath('.')); } - const output = argTransformer(cmd.output); - const cacheDir = argTransformer( + const output = transformPath(cmd.output); + const cacheDir = transformPath( process.env.BACKSTAGE_CACHE_DIR || cmd.cacheDir, ); const maxCacheEntries = Number(process.env.BACKSTAGE_CACHE_MAX_ENTRIES) || DEFAULT_MAX_ENTRIES; return { inputs, output, cacheDir, maxCacheEntries }; } + +export function getDefaultCacheOptions(): Options { + return { + inputs: [transformPath('.')], + output: transformPath('dist'), + cacheDir: transformPath( + process.env.BACKSTAGE_CACHE_DIR || DEFAULT_CACHE_DIR, + ), + maxCacheEntries: + Number(process.env.BACKSTAGE_CACHE_MAX_ENTRIES) || DEFAULT_MAX_ENTRIES, + }; +} From 08a5023ad445e66b22bc6f83577e9ebe60cbac3e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 00:01:56 +0200 Subject: [PATCH 35/58] packages/cli: make plugin:build have built-in caching --- packages/cli/src/commands/plugin/build.ts | 13 ++++++++----- .../cli/templates/default-plugin/package.json.hbs | 2 +- packages/core/package.json | 2 +- plugins/home-page/package.json | 2 +- plugins/welcome/package.json | 2 +- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/cli/src/commands/plugin/build.ts b/packages/cli/src/commands/plugin/build.ts index cb28d4cf5f..aa9c68c494 100644 --- a/packages/cli/src/commands/plugin/build.ts +++ b/packages/cli/src/commands/plugin/build.ts @@ -17,6 +17,7 @@ import { rollup, watch, OutputOptions } from 'rollup'; import conf from './rollup.config'; import { Command } from 'commander'; +import { withCache, getDefaultCacheOptions } from 'commands/build-cache'; export default async (cmd: Command) => { if (cmd.watch) { @@ -40,10 +41,12 @@ export default async (cmd: Command) => { }); } - const bundle = await rollup({ - input: conf.input, - plugins: conf.plugins, + await withCache(getDefaultCacheOptions(), async () => { + const bundle = await rollup({ + input: conf.input, + plugins: conf.plugins, + }); + await bundle.generate(conf.output as OutputOptions); + await bundle.write(conf.output as OutputOptions); }); - await bundle.generate(conf.output as OutputOptions); - await bundle.write(conf.output as OutputOptions); }; diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index dc1500944a..83d998f8e4 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -7,7 +7,7 @@ "private": true, "scripts": { "build:watch": "backstage-cli plugin:build --watch", - "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" }, diff --git a/packages/core/package.json b/packages/core/package.json index 93c2e2fdf7..0bc9165238 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -20,7 +20,7 @@ "types": "dist/index.d.ts", "scripts": { "build:watch": "backstage-cli plugin:build --watch", - "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" }, diff --git a/plugins/home-page/package.json b/plugins/home-page/package.json index 88afe98bd4..4432fe1588 100644 --- a/plugins/home-page/package.json +++ b/plugins/home-page/package.json @@ -7,7 +7,7 @@ "private": true, "scripts": { "build:watch": "backstage-cli plugin:build --watch", - "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" }, diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index 8eb9f45f7f..f7e317ce54 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -7,7 +7,7 @@ "license": "Apache-2.0", "scripts": { "build:watch": "backstage-cli plugin:build --watch", - "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" }, From f5ddb991053fdeebb30a45712f01dd0e581ef330 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 10:06:00 +0200 Subject: [PATCH 36/58] packages/cli: remove output dir before building with cache --- packages/cli/src/commands/build-cache/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/cli/src/commands/build-cache/index.ts b/packages/cli/src/commands/build-cache/index.ts index fafc945907..a8a1a27e9d 100644 --- a/packages/cli/src/commands/build-cache/index.ts +++ b/packages/cli/src/commands/build-cache/index.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import fs from 'fs-extra'; import { Command } from 'commander'; import { run } from 'helpers/run'; import { Cache } from './cache'; @@ -31,6 +32,7 @@ export async function withCache( const key = await Cache.readInputKey(options.inputs); if (!key) { print('input directory is dirty, skipping cache'); + await fs.remove(options.output); await buildFunc(); return; } @@ -49,6 +51,7 @@ export async function withCache( } print('cache miss, need to build'); + await fs.remove(options.output); await buildFunc(); await cacheResult.archive(options.output, options.maxCacheEntries); From fe3254e16578ec99d1bfb7c5f3a9dd1c0a6234a1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 00:40:41 +0200 Subject: [PATCH 37/58] packages/cli: add build option to watchDeps and use for app serve --- package.json | 2 +- packages/cli/src/commands/app/serve.ts | 2 +- packages/cli/src/commands/watch-deps/index.ts | 30 +++++++++++++++---- .../cli/src/commands/watch-deps/packages.ts | 11 ------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 6b15b4cfc0..0387a4e7ce 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "node": ">=12.0.0" }, "scripts": { - "start": "yarn build && yarn workspace example-app start", + "start": "yarn workspace example-app start", "bundle": "yarn build && yarn workspace example-app bundle", "build": "lerna run build", "test": "yarn build && lerna run test --since origin/master -- --coverage", diff --git a/packages/cli/src/commands/app/serve.ts b/packages/cli/src/commands/app/serve.ts index 25977850a3..86ca6b97d3 100644 --- a/packages/cli/src/commands/app/serve.ts +++ b/packages/cli/src/commands/app/serve.ts @@ -21,7 +21,7 @@ export default async () => { const args = ['start']; // Start dynamic watch and build of dependencies, then serve the app - await watchDeps(); + await watchDeps({ build: true }); await run('react-scripts', args, { env: { EXTEND_ESLINT: 'true', diff --git a/packages/cli/src/commands/watch-deps/index.ts b/packages/cli/src/commands/watch-deps/index.ts index 0c0141ef73..11093d7387 100644 --- a/packages/cli/src/commands/watch-deps/index.ts +++ b/packages/cli/src/commands/watch-deps/index.ts @@ -15,13 +15,13 @@ */ import chalk from 'chalk'; - +import fs from 'fs-extra'; import { createLoggerFactory } from './logger'; -import { getPackageDeps } from './packages'; +import { findAllDeps } from './packages'; import { startWatcher, startPackageWatcher } from './watcher'; import { startCompiler } from './compiler'; import { startChild } from './child'; -import { waitForExit } from 'helpers/run'; +import { waitForExit, run } from 'helpers/run'; import { paths } from 'helpers/paths'; const PACKAGE_BLACKLIST = [ @@ -31,9 +31,13 @@ const PACKAGE_BLACKLIST = [ const WATCH_LOCATIONS = ['package.json', 'src', 'assets']; +export type Options = { + build?: boolean; +}; + // Start watching for dependency changes. // The returned promise resolves when watchers have started for all current dependencies. -export async function watchDeps() { +export async function watchDeps(options: Options = {}) { const localPackagePath = paths.resolveTarget('package.json'); // Rotate through different prefix colors to make it easier to differenciate between different deps @@ -46,7 +50,21 @@ export async function watchDeps() { ]); // Find all direct and transitive local dependencies of the current package. - const deps = await getPackageDeps(localPackagePath, PACKAGE_BLACKLIST); + const packageData = await fs.readFile(localPackagePath, 'utf8'); + const packageJson = JSON.parse(packageData); + const packageName = packageJson.name; + + const deps = await findAllDeps(packageName, PACKAGE_BLACKLIST); + + if (options.build) { + await run('lerna', [ + 'run', + '--scope', + packageName, + '--include-dependencies', + 'build', + ]); + } // We lazily watch all our deps, as in we don't start the actual watch compiler until a change is detected const watcher = await startWatcher(deps, WATCH_LOCATIONS, pkg => { @@ -56,7 +74,7 @@ export async function watchDeps() { }); await startPackageWatcher(localPackagePath, async () => { - const newDeps = await getPackageDeps(localPackagePath, PACKAGE_BLACKLIST); + const newDeps = await findAllDeps(packageName, PACKAGE_BLACKLIST); await watcher.update(newDeps); }); } diff --git a/packages/cli/src/commands/watch-deps/packages.ts b/packages/cli/src/commands/watch-deps/packages.ts index f8ad935ec4..f5744a41d4 100644 --- a/packages/cli/src/commands/watch-deps/packages.ts +++ b/packages/cli/src/commands/watch-deps/packages.ts @@ -14,12 +14,8 @@ * limitations under the License. */ -import fs from 'fs'; -import { promisify } from 'util'; import { paths } from 'helpers/paths'; -const readFile = promisify(fs.readFile); - const LernaProject = require('@lerna/project'); const PackageGraph = require('@lerna/package-graph'); @@ -64,10 +60,3 @@ export async function findAllDeps( return [...deps.values()]; } - -export async function getPackageDeps(packagePath: string, blacklist: string[]) { - const packageData = await readFile(packagePath, 'utf8'); - const packageJson = JSON.parse(packageData); - - return await findAllDeps(packageJson.name, blacklist); -} From 884a36179eb193c6b79be39b80433359b9ae2fac Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 01:05:54 +0200 Subject: [PATCH 38/58] packages/cli: avoid clearing screen in app-serve --- packages/cli/src/commands/app/serve.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/commands/app/serve.ts b/packages/cli/src/commands/app/serve.ts index 86ca6b97d3..51806aa9d6 100644 --- a/packages/cli/src/commands/app/serve.ts +++ b/packages/cli/src/commands/app/serve.ts @@ -14,18 +14,29 @@ * limitations under the License. */ -import { run } from 'helpers/run'; +import { spawn } from 'child_process'; +import { waitForExit } from 'helpers/run'; import { watchDeps } from 'commands/watch-deps'; +import { createLogger } from 'commands/watch-deps/logger'; export default async () => { - const args = ['start']; - // Start dynamic watch and build of dependencies, then serve the app await watchDeps({ build: true }); - await run('react-scripts', args, { + + const child = spawn('react-scripts', ['start'], { env: { + FORCE_COLOR: 'true', EXTEND_ESLINT: 'true', SKIP_PREFLIGHT_CHECK: 'true', + ...process.env, }, + stdio: ['inherit', 'pipe', 'inherit'], + shell: true, }); + + // We need to avoid clearing the terminal, or the build feedback of dependencies will be lost + const log = createLogger(); + child.stdout.setEncoding('utf8'); + child.stdout!.on('data', log.out); + await waitForExit(child); }; From 1fdba128c60d3bc9acb8228c169d6fbc6da35de3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 10:47:46 +0200 Subject: [PATCH 39/58] packages,plugins: separate build:watch is no longer needed --- packages/cli/templates/default-plugin/package.json.hbs | 1 - packages/core/package.json | 1 - plugins/home-page/package.json | 1 - plugins/welcome/package.json | 1 - 4 files changed, 4 deletions(-) diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 83d998f8e4..3fb02a992e 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -6,7 +6,6 @@ "license": "Apache-2.0", "private": true, "scripts": { - "build:watch": "backstage-cli plugin:build --watch", "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" diff --git a/packages/core/package.json b/packages/core/package.json index 0bc9165238..fcba46b1f1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -19,7 +19,6 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts", "scripts": { - "build:watch": "backstage-cli plugin:build --watch", "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" diff --git a/plugins/home-page/package.json b/plugins/home-page/package.json index 4432fe1588..548ed25a8d 100644 --- a/plugins/home-page/package.json +++ b/plugins/home-page/package.json @@ -6,7 +6,6 @@ "license": "Apache-2.0", "private": true, "scripts": { - "build:watch": "backstage-cli plugin:build --watch", "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index f7e317ce54..f9f39f5c4e 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -6,7 +6,6 @@ "private": true, "license": "Apache-2.0", "scripts": { - "build:watch": "backstage-cli plugin:build --watch", "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" From ad977c10dd7e392593c97390ccbda0b57decce31 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 11:10:31 +0200 Subject: [PATCH 40/58] scripts/cli-e2e-test: fixed some flakiness (#493) --- scripts/cli-e2e-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cli-e2e-test.js b/scripts/cli-e2e-test.js index c1e90ea0ce..48058550d9 100644 --- a/scripts/cli-e2e-test.js +++ b/scripts/cli-e2e-test.js @@ -19,7 +19,7 @@ const childProcess = require('child_process'); const { spawn } = childProcess; const Browser = require('zombie'); -const EXPECTED_LOAD_ERRORS = /connect ECONNREFUSED|did not get to load all resources/; +const EXPECTED_LOAD_ERRORS = /ECONNREFUSED|ECONNRESET|did not get to load all resources/; Browser.localhost('localhost', 3000); From 3e20a1e1da9b3c12c846f6c60a8b24b0fde0d4b2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 11:20:15 +0200 Subject: [PATCH 41/58] packages/cli/bin: add copyright notice (#494) --- packages/cli/bin/backstage-cli | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/cli/bin/backstage-cli b/packages/cli/bin/backstage-cli index a47851bf03..5b7ee44877 100755 --- a/packages/cli/bin/backstage-cli +++ b/packages/cli/bin/backstage-cli @@ -1,4 +1,19 @@ #!/usr/bin/env node +/* + * 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. + */ const path = require('path'); From 3b9b16c9523a34529cebd2dd7b9cba54e221c641 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 12:26:08 +0200 Subject: [PATCH 42/58] v0.1.1-alpha.2 --- lerna.json | 2 +- packages/app/package.json | 10 +++++----- packages/cli/package.json | 2 +- packages/core/package.json | 4 ++-- packages/storybook/package.json | 2 +- plugins/home-page/package.json | 6 +++--- plugins/welcome/package.json | 6 +++--- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lerna.json b/lerna.json index 4db7e59c00..7a9ee6a4cb 100644 --- a/lerna.json +++ b/lerna.json @@ -5,5 +5,5 @@ ], "npmClient": "yarn", "useWorkspaces": true, - "version": "0.1.1-alpha.1" + "version": "0.1.1-alpha.2" } diff --git a/packages/app/package.json b/packages/app/package.json index 0b7db7ae41..e41444a7b4 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,12 +1,12 @@ { "name": "example-app", - "version": "0.1.1-alpha.1", + "version": "0.1.1-alpha.2", "private": true, "dependencies": { - "@backstage/cli": "^0.1.1-alpha.1", - "@backstage/core": "^0.1.1-alpha.1", - "@backstage/plugin-home-page": "^0.1.1-alpha.1", - "@backstage/plugin-welcome": "^0.1.1-alpha.1", + "@backstage/cli": "^0.1.1-alpha.2", + "@backstage/core": "^0.1.1-alpha.2", + "@backstage/plugin-home-page": "^0.1.1-alpha.2", + "@backstage/plugin-welcome": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6b6f489575..40b5d78040 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli", "description": "CLI for developing Backstage plugins and apps", - "version": "0.1.1-alpha.1", + "version": "0.1.1-alpha.2", "private": false, "publishConfig": { "access": "public" diff --git a/packages/core/package.json b/packages/core/package.json index fcba46b1f1..34ccbf865f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core", "description": "Core API used by Backstage plugins and apps", - "version": "0.1.1-alpha.1", + "version": "0.1.1-alpha.2", "private": false, "publishConfig": { "access": "public" @@ -41,7 +41,7 @@ "recompose": "0.30.0" }, "devDependencies": { - "@backstage/cli": "^0.1.1-alpha.1", + "@backstage/cli": "^0.1.1-alpha.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", diff --git a/packages/storybook/package.json b/packages/storybook/package.json index 056c80b963..fc15da6207 100644 --- a/packages/storybook/package.json +++ b/packages/storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "0.1.1-alpha.1", + "version": "0.1.1-alpha.2", "description": "Storybook build for core package", "private": true, "scripts": { diff --git a/plugins/home-page/package.json b/plugins/home-page/package.json index 548ed25a8d..389133ccbe 100644 --- a/plugins/home-page/package.json +++ b/plugins/home-page/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-home-page", - "version": "0.1.1-alpha.1", + "version": "0.1.1-alpha.2", "main": "dist/index.cjs.js", "types": "dist/index.d.ts", "license": "Apache-2.0", @@ -11,8 +11,8 @@ "test": "backstage-cli test" }, "devDependencies": { - "@backstage/cli": "^0.1.1-alpha.1", - "@backstage/core": "^0.1.1-alpha.1", + "@backstage/cli": "^0.1.1-alpha.2", + "@backstage/core": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^4.2.4", diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index f9f39f5c4e..45fcd18be0 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-welcome", - "version": "0.1.1-alpha.1", + "version": "0.1.1-alpha.2", "main": "dist/index.cjs.js", "types": "dist/index.d.ts", "private": true, @@ -11,8 +11,8 @@ "test": "backstage-cli test" }, "devDependencies": { - "@backstage/cli": "^0.1.1-alpha.1", - "@backstage/core": "^0.1.1-alpha.1", + "@backstage/cli": "^0.1.1-alpha.2", + "@backstage/core": "^0.1.1-alpha.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", From 6c32c514561b6a593374e0468ee41e28a9a1b792 Mon Sep 17 00:00:00 2001 From: Kat Zhou <61153904+katz95@users.noreply.github.com> Date: Tue, 7 Apr 2020 15:04:41 +0200 Subject: [PATCH 43/58] Create design.md --- docs/design.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/design.md diff --git a/docs/design.md b/docs/design.md new file mode 100644 index 0000000000..f626b8017b --- /dev/null +++ b/docs/design.md @@ -0,0 +1,62 @@ +# Designing for Backstage + +Much like Backstage Open Source, this is a *living* document! We'll keep this updated as we evolve our practices! + +## 📚 Our Philosophy + +### Iterative +Backstage Open Source is a newly launched endeavor, and we’re excited to scale up our design practices! With that said, we’ll be working closely with you, the community, and iterating and experimenting as we go to see what works best. As a continual work in progress, we aspire to release early and often. Not only that, we are committed to working with developers to create a seamless and easy handoff. If you’re curious to see how we grow and would like to play a role in that growth, check out the issues in this GitHub repo! + + +### Collaborative +The Backstage Design Team is small but mighty, and we truly cherish the amazing opportunity we have to work with the Backstage Open Source community! Have an idea? A component request? Feel free to communicate with us via [Discord](https://discord.gg/PefUsZ) (*#design* channel). Collaboration trumps individual speed, and we want to work with you to make Backstage work for all of our users. + + +### Transparent +There are a lot of exciting things coming up and we want to keep you in the loop! Keep an eye on our Milestones in GitHub to see where we’re headed. We’ll also be posting updates in the *#design* channel on [Discord](https://discord.gg/PefUsZ). Not only that, we want to keep you informed on the decisions we’ve made and why we’ve made them. + + +## 🛠 Our Practice +The chart below details how we work. ***Stay tuned***: We are currently in the process of securing a Figma workspace for Backstage Open Source, and we plan on referencing Figma documents to share specs and prototypes with the community. + +| Step 1 | Step 2 | Step 3 | Step 4 | Step 5 | Step 6 | +|:---|:---|:---|:---|:---|:---| +| Platform design team submits an issue to **spotify/Backstage GitHub** with a potential component. | Backstage community offers feedback or approval on **spotify/Backstage GitHub**. | Platform design team adjusts accordingly (as they see fit) and update the Figma DLS document. | Designed component is added to **spotify/Backstage GitHub** as an issue. | External or internal Backstage open source contributors build the component. | External or internal contributors add the component to the **Backstage Storybook**. 🎉 | + + + +The following diagram shows the relationship between the Backstage Design System and our foundation, which comprises of [Material UI](https://material-ui.com/) that is shaped by user experience and user interface decisions made by our Backstage Design Team. Also note, we encourage you to take the core experience we’ve crafted and add custom theming to better represent your organization! +| Backstage Design System | +|---| +| Backstage UI/UX | +| Material UI | + + +## ✅ Our Priorities +### Backstage Design System +This is the set of building blocks for Backstage contributors to leverage as they create rad plugins for Backstage! Why reinvent the wheel when you can use components that have already been vetted by our team and the Backstage community? In the spirit of crafting a cohesive and consistent user experience across all of Backstage, we strongly urge all plugin developers to utilize our Storybook as a reference. Our design system is new and evolving, and we’ll be building it up with your help! +### Core Backstage User Experience +This is the universal user experience that is shared amongst all Backstage users. From more concrete aspects like the plugins marketplace to more abstract ones like end-to-end workflows on Backstage, we’ll be working with the community to create a core user experience that best serves you and your organization. + +## ⭐️ How to Contribute +### Pick up an issue! +In the beginning, most of our issues will be centered around creating universal components for our Backstage Design System and adding them to our Storybook so plugin developers can reference them. We’ll also be creating issues that are focused on building up our core Backstage user experience. We’ll be labeling our issues in GitHub with ‘design’ and/or ‘storybook’ - so feel free to browse and tackle the tasks that interest you. If you have any questions regarding an issue, you can ask them in the comments section of the issue or on [Discord](https://discord.gg/PefUsZ). We absolutely adore our external contributors and will send you virtual semlas for your contributions! + +### Request a component. +Create an issue (label it design and assign it to katz95) or send us a message on [Discord](https://discord.gg/PefUsZ) (#design channel) with details of what the component is and its relevant use cases. Your request will be reviewed by our design team and you should hear back from us within 1-2 business days. We’ll get back to you and let you know whether your requested component will get picked up by our team as something to be added to our design system. + +## ✏️ Resources +**[Storybook](http://storybook.backstage.io/)** - where you can view our components. If you’d like to help build up our design system, you can also add components we’ve designed to the Storybook as well. + +**[Discord](https://discord.gg/PefUsZ)** - all design questions should be directed to the #design channel. + +**Documentation** +- Patterns (stay tuned) +- Figma files/libraries (stay tuned) + +## 🔮 Future +### Contributions from designers +Are you a designer at an organisation that’s implementing Backstage? A designer who’s fascinated by the developer productivity problem space? A designer who’s curious about open source design? We’d love for you to contribute. Behind the scenes, we’re setting up a few foundational elements to make sure that contributing to Backstage as a designer is easy. From styling guidelines to UX principles to Figma documents, we’ll make sure you’re equipped to chip in on this project. We’re excited to work with you! In the meantime, we’d love to hear from you on [Discord](https://discord.gg/PefUsZ). + + +[Back to Docs](../README.md) From e2293a3db75377731e2b1541060af81ebf54ba2c Mon Sep 17 00:00:00 2001 From: Kat Zhou <61153904+katz95@users.noreply.github.com> Date: Tue, 7 Apr 2020 15:44:08 +0200 Subject: [PATCH 44/58] DLS image (#498) --- docs/DLS.png | Bin 0 -> 88585 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/DLS.png diff --git a/docs/DLS.png b/docs/DLS.png new file mode 100644 index 0000000000000000000000000000000000000000..94214e465084b1556ebb9a4213b83431c3f35436 GIT binary patch literal 88585 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 literal 0 HcmV?d00001 From d56ee5a157eea9c50e22e120bf287f8159647a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Tue, 7 Apr 2020 15:57:35 +0200 Subject: [PATCH 45/58] Link to Design from README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ad486901b8..c012638e7d 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ For more complex development environment configuration, see the - [Getting Started](docs/getting-started/README.md) - [Architecture](docs/architecture-terminology.md) - [API references](docs/reference/README.md) +- [Designing for Backstage](docs/design.md) - [Storybook - UI components](http://storybook.backstage.io) ([WIP](https://github.com/spotify/backstage/milestone/9)) - [Contributing to Storybook](docs/getting-started/contributing-to-storybook.md) - Using Backstage components (TODO) From 4921a161ed4b17f02b474fe777e52a32ba8e44fb Mon Sep 17 00:00:00 2001 From: Kat Zhou <61153904+katz95@users.noreply.github.com> Date: Tue, 7 Apr 2020 15:59:19 +0200 Subject: [PATCH 46/58] Update README.md (#500) --- docs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.md b/docs/README.md index c645b33024..bada62df0e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,3 +6,4 @@ Check out [https://backstage.io]() or see the table of content below. - [Getting started](getting-started/README.md) - [References](reference/README.md) - [Publishing](publishing.md) +- [Designing for Backstage](design.md) From 4330c7cf07031c34f64429f6ea7cefbc553e9194 Mon Sep 17 00:00:00 2001 From: Kat Zhou <61153904+katz95@users.noreply.github.com> Date: Tue, 7 Apr 2020 15:59:43 +0200 Subject: [PATCH 47/58] Update design.md (#499) --- docs/design.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/design.md b/docs/design.md index f626b8017b..f1b637269a 100644 --- a/docs/design.md +++ b/docs/design.md @@ -26,10 +26,8 @@ The chart below details how we work. ***Stay tuned***: We are currently in the p The following diagram shows the relationship between the Backstage Design System and our foundation, which comprises of [Material UI](https://material-ui.com/) that is shaped by user experience and user interface decisions made by our Backstage Design Team. Also note, we encourage you to take the core experience we’ve crafted and add custom theming to better represent your organization! -| Backstage Design System | -|---| -| Backstage UI/UX | -| Material UI | + +![dls](docs/DLS.png) ## ✅ Our Priorities From 927f54129ac42f021a465cc64398e89f14ea1b41 Mon Sep 17 00:00:00 2001 From: Paul Marbach Date: Mon, 6 Apr 2020 14:14:28 -0400 Subject: [PATCH 48/58] extract test-utils as its own package for use with plugins, etc. --- packages/app/package.json | 1 + packages/app/src/App.tsx | 18 +++--- packages/cli/config/eslint.js | 2 +- .../cli/src/commands/plugin/rollup.config.ts | 1 - .../default-app/packages/app/src/App.tsx | 3 +- .../plugins/welcome/package.json.hbs | 5 +- .../WelcomePage/WelcomePage.test.tsx | 2 +- .../templates/default-plugin/package.json.hbs | 1 + .../ExampleComponent.test.tsx.hbs | 2 +- packages/core/package.json | 5 ++ .../core/src/api/apis/ApiProvider.test.tsx | 2 +- .../src/components/CircleProgress.test.js | 4 +- .../core/src/components/CircleProgress.tsx | 5 +- .../components/HorizontalScrollGrid.test.js | 2 +- .../core/src/components/ProgressCard.test.js | 2 +- .../core/src/components/Status/Status.tsx | 4 +- packages/core/src/index.ts | 4 -- .../ContentHeader/ContentHeader.test.tsx | 2 +- .../layout/ContentHeader/ContentHeader.tsx | 3 +- .../layout/ErrorBoundary/ErrorBoundary.tsx | 7 ++- .../core/src/layout/Header/Header.test.tsx | 2 +- packages/core/src/layout/Header/Header.tsx | 5 +- .../HeaderActionMenu.test.tsx | 2 +- .../layout/HeaderLabel/HeaderLabel.test.tsx | 2 +- .../src/layout/HeaderLabel/HeaderLabel.tsx | 3 +- .../src/layout/InfoCard/BottomLink.test.tsx | 2 +- .../core/src/layout/InfoCard/BottomLink.tsx | 3 +- .../src/layout/InfoCard/InfoCard.test.tsx | 2 +- .../core/src/layout/InfoCard/InfoCard.tsx | 3 +- packages/core/src/theme/theme.d.ts | 50 ----------------- packages/testUtils/.npmrc | 1 + packages/testUtils/README.md | 22 ++++++++ packages/testUtils/package.json | 54 ++++++++++++++++++ packages/testUtils/src/index.ts | 16 ++++++ packages/testUtils/src/setupTests.ts | 17 ++++++ .../src/testUtils/Keyboard.js | 0 .../src/testUtils/Keyboard.test.js | 0 .../src/testUtils/index.tsx} | 56 ++++++++++++------- .../src/testUtils/logCollector.js | 0 .../src/testUtils/mockBreakpoint.ts | 0 packages/testUtils/tsconfig.json | 4 ++ packages/theme/.npmrc | 1 + packages/theme/README.md | 22 ++++++++ packages/theme/package.json | 33 +++++++++++ .../src/BackstageTheme.ts} | 19 +++++-- .../src/BackstageThemeDark.ts} | 15 +++-- .../src/BackstageThemeLight.ts} | 17 ++++-- packages/theme/src/index.ts | 18 ++++++ packages/theme/src/types.ts | 56 +++++++++++++++++++ packages/theme/tsconfig.json | 4 ++ plugins/home-page/package.json | 4 +- .../src/components/HomePage/HomePage.test.tsx | 2 +- plugins/welcome/package.json | 4 +- .../WelcomePage/WelcomePage.test.tsx | 8 +-- yarn.lock | 2 +- 55 files changed, 384 insertions(+), 140 deletions(-) delete mode 100644 packages/core/src/theme/theme.d.ts create mode 100644 packages/testUtils/.npmrc create mode 100644 packages/testUtils/README.md create mode 100644 packages/testUtils/package.json create mode 100644 packages/testUtils/src/index.ts create mode 100644 packages/testUtils/src/setupTests.ts rename packages/{core => testUtils}/src/testUtils/Keyboard.js (100%) rename packages/{core => testUtils}/src/testUtils/Keyboard.test.js (100%) rename packages/{core/src/testUtils/index.js => testUtils/src/testUtils/index.tsx} (59%) rename packages/{core => testUtils}/src/testUtils/logCollector.js (100%) rename packages/{core => testUtils}/src/testUtils/mockBreakpoint.ts (100%) create mode 100644 packages/testUtils/tsconfig.json create mode 100644 packages/theme/.npmrc create mode 100644 packages/theme/README.md create mode 100644 packages/theme/package.json rename packages/{core/src/theme/BackstageTheme.js => theme/src/BackstageTheme.ts} (93%) rename packages/{core/src/theme/BackstageThemeDark.js => theme/src/BackstageThemeDark.ts} (94%) rename packages/{core/src/theme/BackstageThemeLight.js => theme/src/BackstageThemeLight.ts} (94%) create mode 100644 packages/theme/src/index.ts create mode 100644 packages/theme/src/types.ts create mode 100644 packages/theme/tsconfig.json diff --git a/packages/app/package.json b/packages/app/package.json index e41444a7b4..e24ac9688c 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -5,6 +5,7 @@ "dependencies": { "@backstage/cli": "^0.1.1-alpha.2", "@backstage/core": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", "@backstage/plugin-home-page": "^0.1.1-alpha.2", "@backstage/plugin-welcome": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index 24dee65278..7f203db196 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -14,12 +14,14 @@ * limitations under the License. */ -import { CssBaseline, makeStyles, ThemeProvider } from '@material-ui/core'; import { - BackstageThemeLight, - BackstageThemeDark, - createApp, -} from '@backstage/core'; + CssBaseline, + makeStyles, + Theme, + ThemeProvider, +} from '@material-ui/core'; +import { BackstageThemeLight, BackstageThemeDark } from '@backstage/theme'; +import { createApp } from '@backstage/core'; import React, { FC } from 'react'; import { BrowserRouter as Router } from 'react-router-dom'; import Root from './components/Root'; @@ -51,13 +53,15 @@ app.registerApis(apis); app.registerPlugin(...Object.values(plugins)); const AppComponent = app.build(); +type T = typeof BackstageThemeLight | typeof BackstageThemeDark; + const App: FC<{}> = () => { useStyles(); const [theme, toggleTheme] = useThemeType( localStorage.getItem('theme') || 'auto', ); - let backstageTheme = BackstageThemeLight; + let backstageTheme: T = BackstageThemeLight; switch (theme) { case 'light': backstageTheme = BackstageThemeLight; @@ -82,7 +86,7 @@ const App: FC<{}> = () => { }; return ( - + diff --git a/packages/cli/config/eslint.js b/packages/cli/config/eslint.js index 81941b6fad..dbdb349274 100644 --- a/packages/cli/config/eslint.js +++ b/packages/cli/config/eslint.js @@ -61,7 +61,7 @@ module.exports = { }, }, { - files: ['**/*.test.*', '**/src/setupTests.*', '**/src/testUtils/**'], + files: ['**/*.test.*', '**/src/setupTests.*'], rules: { // Tests are allowed to import dev dependencies 'import/no-extraneous-dependencies': [ diff --git a/packages/cli/src/commands/plugin/rollup.config.ts b/packages/cli/src/commands/plugin/rollup.config.ts index d1f251665f..bc73a789ff 100644 --- a/packages/cli/src/commands/plugin/rollup.config.ts +++ b/packages/cli/src/commands/plugin/rollup.config.ts @@ -46,7 +46,6 @@ export default { json(), typescript({ include: `${paths.resolveTarget('src')}/**/*.{js,jsx,ts,tsx}`, - exclude: [paths.resolveTarget('src/testUtils/**')], }), ], } as RollupWatchOptions; diff --git a/packages/cli/templates/default-app/packages/app/src/App.tsx b/packages/cli/templates/default-app/packages/app/src/App.tsx index 14a07870b2..ec8d8d435a 100644 --- a/packages/cli/templates/default-app/packages/app/src/App.tsx +++ b/packages/cli/templates/default-app/packages/app/src/App.tsx @@ -1,5 +1,6 @@ import { CssBaseline, makeStyles, ThemeProvider } from '@material-ui/core'; -import { BackstageTheme, createApp } from '@backstage/core'; +import { createApp } from '@backstage/core'; +import { BackstageTheme } from '@backstage/theme'; import React, { FC } from 'react'; import { BrowserRouter as Router } from 'react-router-dom'; import * as plugins from './plugins'; 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 1aa7f2c5c7..581f5e41ce 100644 --- a/packages/cli/templates/default-app/plugins/welcome/package.json.hbs +++ b/packages/cli/templates/default-app/plugins/welcome/package.json.hbs @@ -10,11 +10,12 @@ "test": "backstage-cli test" }, "devDependencies": { - "@backstage/core": "^{{version}}", "@backstage/cli": "^{{version}}", "@types/testing-library__jest-dom": "5.0.2" }, "dependencies": { - "@material-ui/lab": "4.0.0-alpha.45" + "@material-ui/lab": "4.0.0-alpha.45", + "@backstage/core": "^{{version}}", + "@backstage/theme": "^{{version}}" } } diff --git a/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx b/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx index 4b9b12913d..6d9268fadd 100644 --- a/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx +++ b/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import WelcomePage from './WelcomePage'; import { ThemeProvider } from '@material-ui/core'; -import { BackstageTheme } from '@backstage/core'; +import { BackstageTheme } from '@backstage/theme'; describe('WelcomePage', () => { it('should render', () => { diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 3fb02a992e..49d8d20d71 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -22,6 +22,7 @@ }, "peerDependencies": { "@backstage/core": "^{{version}}", + "@backstage/theme": "^{{version}}", "@material-ui/core": "^4.9.1", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", diff --git a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs index 15db0863d2..80b97169bf 100644 --- a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +++ b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs @@ -19,7 +19,7 @@ import { render } from '@testing-library/react'; import mockFetch from 'jest-fetch-mock'; import ExampleComponent from './ExampleComponent'; import { ThemeProvider } from '@material-ui/core'; -import { BackstageTheme } from '@backstage/core'; +import { BackstageTheme } from '@backstage/theme'; describe('ExampleComponent', () => { it('should render', () => { diff --git a/packages/core/package.json b/packages/core/package.json index 34ccbf865f..85054eba14 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -42,9 +42,14 @@ }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.2", + "@backstage/test-utils": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", "react-router": "^5.1.2" + }, + "peerDependencies": { + "@backstage/theme": "^0.1.1-alpha.2" } } diff --git a/packages/core/src/api/apis/ApiProvider.test.tsx b/packages/core/src/api/apis/ApiProvider.test.tsx index 20634f74af..5734899f68 100644 --- a/packages/core/src/api/apis/ApiProvider.test.tsx +++ b/packages/core/src/api/apis/ApiProvider.test.tsx @@ -19,7 +19,7 @@ import ApiProvider, { useApi, withApis } from './ApiProvider'; import ApiRef from './ApiRef'; import ApiRegistry from './ApiRegistry'; import { render } from '@testing-library/react'; -import { withLogCollector } from '../../testUtils'; +import { withLogCollector } from '@backstage/test-utils'; describe('ApiProvider', () => { type Api = () => string; diff --git a/packages/core/src/components/CircleProgress.test.js b/packages/core/src/components/CircleProgress.test.js index 7d4b294dc1..68e8f027c2 100644 --- a/packages/core/src/components/CircleProgress.test.js +++ b/packages/core/src/components/CircleProgress.test.js @@ -16,9 +16,9 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { wrapInThemedTestApp } from '../testUtils'; +import { COLORS } from '@backstage/theme'; +import { wrapInThemedTestApp } from '@backstage/test-utils'; import CircleProgress, { getProgressColor } from './CircleProgress'; -import { COLORS } from '../theme/BackstageTheme'; describe('', () => { it('renders without exploding', () => { diff --git a/packages/core/src/components/CircleProgress.tsx b/packages/core/src/components/CircleProgress.tsx index 6d30916c81..d5cd191b3d 100644 --- a/packages/core/src/components/CircleProgress.tsx +++ b/packages/core/src/components/CircleProgress.tsx @@ -15,12 +15,11 @@ */ import { makeStyles } from '@material-ui/core'; +import { BackstageTheme, COLORS } from '@backstage/theme'; import { Circle } from 'rc-progress'; import React, { FC } from 'react'; -import { COLORS } from '../theme/BackstageTheme'; -import { BackstageTheme } from '../theme/theme'; -const useStyles = makeStyles((theme: BackstageTheme) => ({ +const useStyles = makeStyles(theme => ({ root: { position: 'relative', lineHeight: 0, diff --git a/packages/core/src/components/HorizontalScrollGrid.test.js b/packages/core/src/components/HorizontalScrollGrid.test.js index 6838b2bfc7..d7f1e2387a 100644 --- a/packages/core/src/components/HorizontalScrollGrid.test.js +++ b/packages/core/src/components/HorizontalScrollGrid.test.js @@ -16,7 +16,7 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; -import { renderWithEffects, wrapInThemedTestApp } from '../testUtils'; +import { renderWithEffects, wrapInThemedTestApp } from '@backstage/test-utils'; import HorizontalScrollGrid from './HorizontalScrollGrid'; import { Grid } from '@material-ui/core'; diff --git a/packages/core/src/components/ProgressCard.test.js b/packages/core/src/components/ProgressCard.test.js index 4ebb869285..7357cab812 100644 --- a/packages/core/src/components/ProgressCard.test.js +++ b/packages/core/src/components/ProgressCard.test.js @@ -16,7 +16,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { wrapInThemedTestApp } from '../testUtils'; +import { wrapInThemedTestApp } from '@backstage/test-utils'; import ProgressCard from './ProgressCard'; diff --git a/packages/core/src/components/Status/Status.tsx b/packages/core/src/components/Status/Status.tsx index f6f331edce..d03dc52b6e 100644 --- a/packages/core/src/components/Status/Status.tsx +++ b/packages/core/src/components/Status/Status.tsx @@ -15,11 +15,11 @@ */ import { makeStyles } from '@material-ui/core'; +import { BackstageTheme } from '@backstage/theme'; import classNames from 'classnames'; import React, { FC } from 'react'; -import { BackstageTheme } from '../../theme/theme'; -const useStyles = makeStyles((theme: BackstageTheme) => ({ +const useStyles = makeStyles(theme => ({ status: { width: 12, height: 12, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 73b0e33ddd..4472f57d40 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -24,10 +24,6 @@ export { default as HeaderLabel } from './layout/HeaderLabel'; export { default as InfoCard } from './layout/InfoCard'; export { default as ErrorBoundary } from './layout/ErrorBoundary'; export * from './layout/Sidebar'; -export { default as BackstageThemeLight } from './theme/BackstageThemeLight'; -export { default as BackstageTheme } from './theme/BackstageTheme'; -export { COLORS } from './theme/BackstageTheme'; -export { default as BackstageThemeDark } from './theme/BackstageThemeDark'; export { default as HorizontalScrollGrid } from './components/HorizontalScrollGrid'; export { default as ProgressCard } from './components/ProgressCard'; export { default as CircleProgress } from './components/CircleProgress'; diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx index 50b4f921ac..1ab171bcf1 100644 --- a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx +++ b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import ContentHeader from './ContentHeader'; -import { wrapInThemedTestApp } from '../../testUtils'; +import { wrapInThemedTestApp } from '@backstage/test-utils'; jest.mock('react-helmet', () => { return ({ defaultTitle }) =>
defaultTitle: {defaultTitle}
; diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.tsx index 0f83f54c25..61bea92639 100644 --- a/packages/core/src/layout/ContentHeader/ContentHeader.tsx +++ b/packages/core/src/layout/ContentHeader/ContentHeader.tsx @@ -21,9 +21,8 @@ import React, { ComponentType, Fragment, FC } from 'react'; import { Typography, makeStyles } from '@material-ui/core'; import Helmet from 'react-helmet'; -import { BackstageTheme } from '../../theme/theme'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles(theme => ({ container: { width: '100%', display: 'flex', diff --git a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx index 34a903480e..9e9d639548 100644 --- a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx +++ b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx @@ -17,7 +17,7 @@ import React, { ComponentClass, Component, SFC } from 'react'; type Props = { - slackChannel: string; + slackChannel?: string; onError?: (error: Error, errorInfo: string) => null; }; @@ -69,13 +69,14 @@ export default ErrorBoundary; type EProps = { error?: Error; errorInfo?: string; - slackChannel: string; + slackChannel?: string; }; const Error: SFC = ({ slackChannel }) => { return (
- Something went wrong here. Please contact {slackChannel} for help. + Something went wrong here.{' '} + {slackChannel && <>Please contact {slackChannel} for help.}
); }; diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx index 5213fe1ac3..79d74791c8 100644 --- a/packages/core/src/layout/Header/Header.test.tsx +++ b/packages/core/src/layout/Header/Header.test.tsx @@ -16,8 +16,8 @@ import React from 'react'; import { render } from '@testing-library/react'; +import { wrapInThemedTestApp } from '@backstage/test-utils'; import Header from './Header'; -import { wrapInThemedTestApp } from '../../testUtils'; jest.mock('react-helmet', () => { return ({ defaultTitle }) =>
defaultTitle: {defaultTitle}
; diff --git a/packages/core/src/layout/Header/Header.tsx b/packages/core/src/layout/Header/Header.tsx index 5b3bb7ee60..6af4019d13 100644 --- a/packages/core/src/layout/Header/Header.tsx +++ b/packages/core/src/layout/Header/Header.tsx @@ -17,12 +17,13 @@ import React, { Fragment, ReactNode, CSSProperties, FC } from 'react'; import Helmet from 'react-helmet'; import { Typography, Tooltip, makeStyles } from '@material-ui/core'; +import { BackstageTheme } from '@backstage/theme'; + import { Theme } from '../Page/Page'; // import { Link } from 'shared/components'; -import { BackstageTheme } from '../../theme/theme'; import Waves from './Waves'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles(theme => ({ header: { gridArea: 'pageHeader', padding: theme.spacing(3), diff --git a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx index 3a32d9371e..17822228e8 100644 --- a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx +++ b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; -import { wrapInThemedTestApp, Keyboard } from '../../testUtils'; +import { wrapInThemedTestApp, Keyboard } from '@backstage/test-utils'; import HeaderActionMenu from './HeaderActionMenu'; describe('', () => { diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx index 727c890e35..cbdfb3da80 100644 --- a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx +++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx @@ -16,8 +16,8 @@ import React from 'react'; import { render } from '@testing-library/react'; +import { wrapInThemedTestApp } from '@backstage/test-utils'; import HeaderLabel from './HeaderLabel'; -import { wrapInThemedTestApp } from '../../testUtils'; describe('', () => { it('should have a label', () => { diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx index 56fcd01152..e2fd11ff15 100644 --- a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx +++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx @@ -16,9 +16,8 @@ import { Link, makeStyles, Typography } from '@material-ui/core'; import React, { FC } from 'react'; -import { BackstageTheme } from '../../theme/theme'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles(theme => ({ root: { textAlign: 'left', margin: theme.spacing(2), diff --git a/packages/core/src/layout/InfoCard/BottomLink.test.tsx b/packages/core/src/layout/InfoCard/BottomLink.test.tsx index d240a232b7..f301de1c84 100644 --- a/packages/core/src/layout/InfoCard/BottomLink.test.tsx +++ b/packages/core/src/layout/InfoCard/BottomLink.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { wrapInTestApp } from '../../testUtils'; +import { wrapInTestApp } from '@backstage/test-utils'; import BottomLink from './BottomLink'; const minProps = { diff --git a/packages/core/src/layout/InfoCard/BottomLink.tsx b/packages/core/src/layout/InfoCard/BottomLink.tsx index 12eabbe753..6721eda0f1 100644 --- a/packages/core/src/layout/InfoCard/BottomLink.tsx +++ b/packages/core/src/layout/InfoCard/BottomLink.tsx @@ -26,9 +26,8 @@ import Box from '@material-ui/core/Box'; import grey from '@material-ui/core/colors/grey'; import ArrowIcon from '@material-ui/icons/ArrowForward'; import React, { FC } from 'react'; -import { BackstageTheme } from '../../theme/theme'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles(theme => ({ root: { maxWidth: 'fit-content', padding: theme.spacing(2, 2, 2, 2.5), diff --git a/packages/core/src/layout/InfoCard/InfoCard.test.tsx b/packages/core/src/layout/InfoCard/InfoCard.test.tsx index 7d184d2f89..4d8221d5b8 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.test.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { wrapInTestApp } from '../../testUtils'; +import { wrapInTestApp } from '@backstage/test-utils'; import InfoCard from './InfoCard'; const minProps = { diff --git a/packages/core/src/layout/InfoCard/InfoCard.tsx b/packages/core/src/layout/InfoCard/InfoCard.tsx index 5b3ab1cfd1..10f9f60da0 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.tsx @@ -26,9 +26,8 @@ import { } from '@material-ui/core'; import ErrorBoundary from '../ErrorBoundary/ErrorBoundary'; import BottomLink, { Props as BottomLinkProps } from './BottomLink'; -import { BackstageTheme } from '../../theme/theme'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles(theme => ({ header: { padding: theme.spacing(2, 2, 2, 2.5), }, diff --git a/packages/core/src/theme/theme.d.ts b/packages/core/src/theme/theme.d.ts deleted file mode 100644 index 7c9f552310..0000000000 --- a/packages/core/src/theme/theme.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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 { Theme } from '@material-ui/core'; - -export type BackstageTheme = Theme & { - palette: { - status: { - ok: string; - warning: string; - error: string; - pending: string; - running: string; - background: string; - }; - border: string; - textVerySubtle: string; - textSubtle: string; - highlight: string; - errorBackground: string; - warningBackground: string; - infoBackground: string; - errorText: string; - infoText: string; - warningText: string; - linkHover: string; - link: string; - gold: string; - bursts: { - fontColor: string; - slackChannelText: string; - backgroundColor: { - default: string; - }; - }; - }; -}; diff --git a/packages/testUtils/.npmrc b/packages/testUtils/.npmrc new file mode 100644 index 0000000000..214c29d139 --- /dev/null +++ b/packages/testUtils/.npmrc @@ -0,0 +1 @@ +registry=https://registry.npmjs.org/ diff --git a/packages/testUtils/README.md b/packages/testUtils/README.md new file mode 100644 index 0000000000..46a2e2dab3 --- /dev/null +++ b/packages/testUtils/README.md @@ -0,0 +1,22 @@ +# @backstage/test-utils + +This package provides utilities that can be used to test plugins and apps for Backstage. + +## Installation + +Install the package via npm or yarn: + +```sh +$ npm install --save-dev @backstage/test-utils +``` + +or + +```sh +$ yarn add -D @backstage/test-utils +``` + +## Documentation + +- [Backstage Readme](https://github.com/spotify/backstage/blob/master/README.md) +- [Backstage Documentation](https://github.com/spotify/backstage/blob/master/docs/README.md) diff --git a/packages/testUtils/package.json b/packages/testUtils/package.json new file mode 100644 index 0000000000..96c8de5974 --- /dev/null +++ b/packages/testUtils/package.json @@ -0,0 +1,54 @@ +{ + "name": "@backstage/test-utils", + "description": "Utilities to test Backstage plugins and apps.", + "version": "0.1.1-alpha.2", + "private": false, + "publishConfig": { + "access": "public" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/spotify/backstage", + "directory": "packages/testUtils" + }, + "keywords": [ + "backstage" + ], + "license": "Apache-2.0", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts", + "scripts": { + "build:watch": "backstage-cli plugin:build --watch", + "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "lint": "backstage-cli lint", + "test": "backstage-cli test" + }, + "devDependencies": { + "@backstage/cli": "^0.1.1-alpha.2", + "@backstage/core": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", + "@material-ui/core": "^4.9.1", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "@types/jest": "^24.0.0", + "@types/node": "^12.0.0", + "react": "^16.12.0", + "react-dom": "^16.12.0", + "react-router": "^5.1.2", + "react-router-dom": "^5.1.2" + }, + "peerDependencies": { + "@backstage/core": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", + "@material-ui/core": "^4.9.1", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "react": "^16.12.0", + "react-dom": "^16.12.0", + "react-router": "^5.1.2", + "react-router-dom": "^5.1.2" + } +} diff --git a/packages/testUtils/src/index.ts b/packages/testUtils/src/index.ts new file mode 100644 index 0000000000..43faf28a4a --- /dev/null +++ b/packages/testUtils/src/index.ts @@ -0,0 +1,16 @@ +/* + * 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. + */ +export * from './testUtils'; diff --git a/packages/testUtils/src/setupTests.ts b/packages/testUtils/src/setupTests.ts new file mode 100644 index 0000000000..8925258421 --- /dev/null +++ b/packages/testUtils/src/setupTests.ts @@ -0,0 +1,17 @@ +/* + * 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 '@testing-library/jest-dom/extend-expect'; diff --git a/packages/core/src/testUtils/Keyboard.js b/packages/testUtils/src/testUtils/Keyboard.js similarity index 100% rename from packages/core/src/testUtils/Keyboard.js rename to packages/testUtils/src/testUtils/Keyboard.js diff --git a/packages/core/src/testUtils/Keyboard.test.js b/packages/testUtils/src/testUtils/Keyboard.test.js similarity index 100% rename from packages/core/src/testUtils/Keyboard.test.js rename to packages/testUtils/src/testUtils/Keyboard.test.js diff --git a/packages/core/src/testUtils/index.js b/packages/testUtils/src/testUtils/index.tsx similarity index 59% rename from packages/core/src/testUtils/index.js rename to packages/testUtils/src/testUtils/index.tsx index 611633dcde..d9a4389ac8 100644 --- a/packages/core/src/testUtils/index.js +++ b/packages/testUtils/src/testUtils/index.tsx @@ -14,39 +14,52 @@ * limitations under the License. */ -import React from 'react'; +import React, { + ComponentType, + ReactNode, + FunctionComponent, + ReactElement, +} from 'react'; import { ThemeProvider } from '@material-ui/core'; - +import { act } from 'react-dom/test-utils'; +import { render, RenderResult } from '@testing-library/react'; import { MemoryRouter } from 'react-router'; import { Route } from 'react-router-dom'; - -import { V1 } from '../theme/BackstageTheme'; -import ErrorBoundary from '../layout/ErrorBoundary'; -import { act } from 'react-dom/test-utils'; -import { render } from '@testing-library/react'; +import { BackstageTheme } from '@backstage/theme'; export { default as Keyboard } from './Keyboard'; export { default as mockBreakpoint } from './mockBreakpoint'; export * from './logCollector'; -export function wrapInTestApp(Component, initialRouterEntries) { - const Wrapper = Component instanceof Function ? Component : () => Component; +export function wrapInTestApp( + Component: ComponentType | ReactNode, + initialRouterEntries: string[] = ['/'], +) { + let Wrapper: ComponentType; + if (Component instanceof Function) { + Wrapper = Component; + } else { + Wrapper = (() => Component) as FunctionComponent; + } return ( - - - - + + ); } -export function wrapInThemedTestApp(component, initialRouterEntries) { - const themed = {component}; +export function wrapInThemedTestApp( + component: ReactNode, + initialRouterEntries: string[] = ['/'], +) { + const themed = ( + {component} + ); return wrapInTestApp(themed, initialRouterEntries); } -export const wrapInTheme = (component, theme = V1) => ( +export const wrapInTheme = (component: ReactNode, theme = BackstageTheme) => ( {component} ); @@ -55,10 +68,13 @@ export const wrapInTheme = (component, theme = V1) => ( // cleaner, since act doesn't return the result of the evaluated function. // https://github.com/testing-library/react-testing-library/issues/281 // https://github.com/facebook/react/pull/14853 -export async function renderWithEffects(nodes) { - let value; - await act(async () => { - value = await render(nodes); +export async function renderWithEffects( + nodes: ReactElement, +): Promise { + let value: RenderResult; + await act(() => { + value = render(nodes); }); + // @ts-ignore return value; } diff --git a/packages/core/src/testUtils/logCollector.js b/packages/testUtils/src/testUtils/logCollector.js similarity index 100% rename from packages/core/src/testUtils/logCollector.js rename to packages/testUtils/src/testUtils/logCollector.js diff --git a/packages/core/src/testUtils/mockBreakpoint.ts b/packages/testUtils/src/testUtils/mockBreakpoint.ts similarity index 100% rename from packages/core/src/testUtils/mockBreakpoint.ts rename to packages/testUtils/src/testUtils/mockBreakpoint.ts diff --git a/packages/testUtils/tsconfig.json b/packages/testUtils/tsconfig.json new file mode 100644 index 0000000000..596e2cf729 --- /dev/null +++ b/packages/testUtils/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src"] +} diff --git a/packages/theme/.npmrc b/packages/theme/.npmrc new file mode 100644 index 0000000000..214c29d139 --- /dev/null +++ b/packages/theme/.npmrc @@ -0,0 +1 @@ +registry=https://registry.npmjs.org/ diff --git a/packages/theme/README.md b/packages/theme/README.md new file mode 100644 index 0000000000..a1b6f81f92 --- /dev/null +++ b/packages/theme/README.md @@ -0,0 +1,22 @@ +# @backstage/theme + +This package provides the extended Material UI Theme(s) that power Backstage. + +## Installation + +Install the package via npm or yarn: + +```sh +$ npm install --save @backstage/theme +``` + +or + +```sh +$ yarn add @backstage/theme +``` + +## Documentation + +- [Backstage Readme](https://github.com/spotify/backstage/blob/master/README.md) +- [Backstage Documentation](https://github.com/spotify/backstage/blob/master/docs/README.md) diff --git a/packages/theme/package.json b/packages/theme/package.json new file mode 100644 index 0000000000..6dfaaa8d3e --- /dev/null +++ b/packages/theme/package.json @@ -0,0 +1,33 @@ +{ + "name": "@backstage/theme", + "description": "material-ui theme for use with Backstage.", + "version": "0.1.1-alpha.2", + "private": false, + "publishConfig": { + "access": "public" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/spotify/backstage", + "directory": "packages/theme" + }, + "keywords": [ + "backstage" + ], + "license": "Apache-2.0", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts", + "scripts": { + "build:watch": "backstage-cli plugin:build --watch", + "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "lint": "backstage-cli lint" + }, + "devDependencies": { + "@backstage/cli": "^0.1.1-alpha.2", + "@material-ui/core": "^4.9.1" + }, + "peerDependencies": { + "@material-ui/core": "^4.9.1" + } +} diff --git a/packages/core/src/theme/BackstageTheme.js b/packages/theme/src/BackstageTheme.ts similarity index 93% rename from packages/core/src/theme/BackstageTheme.js rename to packages/theme/src/BackstageTheme.ts index de4bbffca5..202bdbc08c 100644 --- a/packages/core/src/theme/BackstageTheme.js +++ b/packages/theme/src/BackstageTheme.ts @@ -18,6 +18,8 @@ import { createMuiTheme } from '@material-ui/core'; import { darken, lighten } from '@material-ui/core/styles/colorManipulator'; import { blue, yellow } from '@material-ui/core/colors'; +import { BackstageMuiTheme, BackstageMuiThemeOptions } from './types'; + export const COLORS = { PAGE_BACKGROUND: '#F8F8F8', DEFAULT_PAGE_THEME_COLOR: '#7C3699', @@ -37,7 +39,7 @@ export const COLORS = { }, }; -const extendedThemeConfig = { +const extendedThemeConfig: BackstageMuiThemeOptions = { props: { MuiGrid: { spacing: 2, @@ -49,6 +51,7 @@ const extendedThemeConfig = { palette: { background: { default: COLORS.PAGE_BACKGROUND, + // @ts-ignore informational: '#60a3cb', }, status: { @@ -66,6 +69,7 @@ const extendedThemeConfig = { default: COLORS.DEFAULT_PAGE_THEME_COLOR, }, }, + // @ts-ignore primary: { main: blue[500], }, @@ -115,7 +119,9 @@ const extendedThemeConfig = { }, }; -const createOverrides = theme => { +const createOverrides = ( + theme: BackstageMuiTheme, +): Partial => { return { overrides: { MuiTableRow: { @@ -211,7 +217,7 @@ const createOverrides = theme => { MuiButton: { text: { // Text buttons have less padding by default, but we want to keep the original padding - padding: null, + padding: undefined, }, }, MuiChip: { @@ -237,12 +243,15 @@ const createOverrides = theme => { }; }; -const extendedTheme = createMuiTheme(extendedThemeConfig); +const extendedTheme = createMuiTheme(extendedThemeConfig) as BackstageMuiTheme; // V1 theming // https://material-ui-next.com/customization/themes/ // For CSS it is advised to use JSS, see https://material-ui-next.com/customization/css-in-js/ -const BackstageTheme = { ...extendedTheme, ...createOverrides(extendedTheme) }; +const BackstageTheme: BackstageMuiTheme = { + ...extendedTheme, + ...createOverrides(extendedTheme), +}; // Temporary workaround for files incorrectly importing the theme directly export const V1 = BackstageTheme; diff --git a/packages/core/src/theme/BackstageThemeDark.js b/packages/theme/src/BackstageThemeDark.ts similarity index 94% rename from packages/core/src/theme/BackstageThemeDark.js rename to packages/theme/src/BackstageThemeDark.ts index b5562a50ba..b8b89c8f0a 100644 --- a/packages/core/src/theme/BackstageThemeDark.js +++ b/packages/theme/src/BackstageThemeDark.ts @@ -18,6 +18,8 @@ import { createMuiTheme } from '@material-ui/core'; import { darken, lighten } from '@material-ui/core/styles/colorManipulator'; import { blue, yellow } from '@material-ui/core/colors'; +import { BackstageMuiTheme, BackstageMuiThemeOptions } from './types'; + export const COLORS = { PAGE_BACKGROUND: '#282828', EFAULT_PAGE_THEME_COLOR: '#232323', @@ -38,7 +40,7 @@ export const COLORS = { }, }; -const extendedThemeConfig = { +const extendedThemeConfig: BackstageMuiThemeOptions = { props: { MuiGrid: { spacing: 2, @@ -50,6 +52,7 @@ const extendedThemeConfig = { palette: { background: { default: COLORS.PAGE_BACKGROUND, + // @ts-ignore informational: '#60a3cb', }, color: { @@ -71,6 +74,7 @@ const extendedThemeConfig = { default: COLORS.DEFAULT_PAGE_THEME_COLOR, }, }, + // @ts-ignore primary: { main: blue[500], }, @@ -120,13 +124,15 @@ const extendedThemeConfig = { }, }; -const createOverrides = theme => { +const createOverrides = (theme: BackstageMuiTheme): BackstageMuiTheme => { return { overrides: { + // @ts-ignore MuiCSSBaseline: { '@global': { body: { backgroundColor: theme.palette.background.default, + // @ts-ignore color: theme.palette.color.default, }, }, @@ -224,7 +230,7 @@ const createOverrides = theme => { MuiButton: { text: { // Text buttons have less padding by default, but we want to keep the original padding - padding: null, + padding: undefined, }, }, MuiChip: { @@ -250,7 +256,7 @@ const createOverrides = theme => { }; }; -const extendedTheme = createMuiTheme(extendedThemeConfig); +const extendedTheme = createMuiTheme(extendedThemeConfig) as BackstageMuiTheme; // V1 theming // https://material-ui-next.com/customization/themes/ @@ -262,4 +268,5 @@ const BackstageThemeDark = { // Temporary workaround for files incorrectly importing the theme directly export const V1 = BackstageThemeDark; + export default BackstageThemeDark; diff --git a/packages/core/src/theme/BackstageThemeLight.js b/packages/theme/src/BackstageThemeLight.ts similarity index 94% rename from packages/core/src/theme/BackstageThemeLight.js rename to packages/theme/src/BackstageThemeLight.ts index 4f44a0c2b2..14bc942910 100644 --- a/packages/core/src/theme/BackstageThemeLight.js +++ b/packages/theme/src/BackstageThemeLight.ts @@ -18,6 +18,8 @@ import { createMuiTheme } from '@material-ui/core'; import { darken, lighten } from '@material-ui/core/styles/colorManipulator'; import { blue, yellow } from '@material-ui/core/colors'; +import { BackstageMuiTheme, BackstageMuiThemeOptions } from './types'; + export const COLORS = { PAGE_BACKGROUND: '#F8F8F8', DEFAULT_PAGE_THEME_COLOR: '#7C3699', @@ -37,7 +39,7 @@ export const COLORS = { }, }; -const extendedThemeConfig = { +const extendedThemeConfig: BackstageMuiThemeOptions = { props: { MuiGrid: { spacing: 2, @@ -49,6 +51,7 @@ const extendedThemeConfig = { palette: { background: { default: COLORS.PAGE_BACKGROUND, + // @ts-ignore informational: '#60a3cb', }, color: { @@ -69,6 +72,7 @@ const extendedThemeConfig = { default: COLORS.DEFAULT_PAGE_THEME_COLOR, }, }, + // @ts-ignore primary: { main: blue[500], }, @@ -118,13 +122,17 @@ const extendedThemeConfig = { }, }; -const createOverrides = theme => { +const createOverrides = ( + theme: BackstageMuiTheme, +): Partial => { return { overrides: { + // @ts-ignore MuiCSSBaseline: { '@global': { body: { backgroundColor: theme.palette.background.default, + // @ts-ignore color: theme.palette.color.default, }, }, @@ -222,7 +230,7 @@ const createOverrides = theme => { MuiButton: { text: { // Text buttons have less padding by default, but we want to keep the original padding - padding: null, + padding: undefined, }, }, MuiChip: { @@ -248,7 +256,7 @@ const createOverrides = theme => { }; }; -const extendedTheme = createMuiTheme(extendedThemeConfig); +const extendedTheme = createMuiTheme(extendedThemeConfig) as BackstageMuiTheme; // V1 theming // https://material-ui-next.com/customization/themes/ @@ -260,4 +268,5 @@ const BackstageThemeLight = { // Temporary workaround for files incorrectly importing the theme directly export const V1 = BackstageThemeLight; + export default BackstageThemeLight; diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts new file mode 100644 index 0000000000..136355dc37 --- /dev/null +++ b/packages/theme/src/index.ts @@ -0,0 +1,18 @@ +/* + * 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. + */ +export { default as BackstageThemeLight } from './BackstageThemeLight'; +export { default as BackstageThemeDark } from './BackstageThemeDark'; +export { default as BackstageTheme, COLORS } from './BackstageTheme'; diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts new file mode 100644 index 0000000000..9a3e93c3a9 --- /dev/null +++ b/packages/theme/src/types.ts @@ -0,0 +1,56 @@ +/* + * 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 { Theme, ThemeOptions } from '@material-ui/core'; + +export type BackstageMuiPalette = Theme['palette'] & { + status: { + ok: string; + warning: string; + error: string; + pending: string; + running: string; + background: string; + }; + border: string; + textVerySubtle: string; + textSubtle: string; + highlight: string; + errorBackground: string; + warningBackground: string; + infoBackground: string; + errorText: string; + infoText: string; + warningText: string; + linkHover: string; + link: string; + gold: string; + bursts: { + fontColor: string; + slackChannelText: string; + backgroundColor: { + default: string; + }; + }; +}; + +export interface BackstageMuiTheme extends Theme { + palette: BackstageMuiPalette; +} + +export interface BackstageMuiThemeOptions extends ThemeOptions { + palette: Partial; +} diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json new file mode 100644 index 0000000000..596e2cf729 --- /dev/null +++ b/packages/theme/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src"] +} diff --git a/plugins/home-page/package.json b/plugins/home-page/package.json index 389133ccbe..73e208b737 100644 --- a/plugins/home-page/package.json +++ b/plugins/home-page/package.json @@ -13,6 +13,7 @@ "devDependencies": { "@backstage/cli": "^0.1.1-alpha.2", "@backstage/core": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^4.2.4", @@ -25,7 +26,8 @@ "react-dom": "^16.12.0" }, "peerDependencies": { - "@backstage/core": "^0.1.1-alpha.1", + "@backstage/core": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", diff --git a/plugins/home-page/src/components/HomePage/HomePage.test.tsx b/plugins/home-page/src/components/HomePage/HomePage.test.tsx index 6b2c1bfd11..713f0afe1e 100644 --- a/plugins/home-page/src/components/HomePage/HomePage.test.tsx +++ b/plugins/home-page/src/components/HomePage/HomePage.test.tsx @@ -18,7 +18,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import HomePage from './HomePage'; import { ThemeProvider } from '@material-ui/core'; -import { BackstageTheme } from '@backstage/core'; +import { BackstageTheme } from '@backstage/theme'; describe('HomePage', () => { it('should render', () => { diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index 45fcd18be0..f4f33d6265 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -13,6 +13,7 @@ "devDependencies": { "@backstage/cli": "^0.1.1-alpha.2", "@backstage/core": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", @@ -21,7 +22,8 @@ "@types/testing-library__jest-dom": "5.0.2" }, "peerDependencies": { - "@backstage/core": "^0.1.1-alpha.1", + "@backstage/core": "^0.1.1-alpha.2", + "@backstage/theme": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", diff --git a/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx b/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx index b4139e4ed3..9b78726f0a 100644 --- a/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx +++ b/plugins/welcome/src/components/WelcomePage/WelcomePage.test.tsx @@ -18,12 +18,8 @@ import React from 'react'; import { render } from '@testing-library/react'; import WelcomePage from './WelcomePage'; import { ThemeProvider } from '@material-ui/core'; -import { - BackstageTheme, - ApiProvider, - ApiRegistry, - errorApiRef, -} from '@backstage/core'; +import { BackstageTheme } from '@backstage/theme'; +import { ApiProvider, ApiRegistry, errorApiRef } from '@backstage/core'; describe('WelcomePage', () => { it('should render', () => { diff --git a/yarn.lock b/yarn.lock index 73c20c3a2c..1f7b93d669 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16924,7 +16924,7 @@ request@^2.85.0, request@^2.87.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -"request@github:cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16": +request@cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16: version "2.88.1" resolved "https://codeload.github.com/cypress-io/request/tar.gz/b5af0d1fa47eec97ba980cde90a13e69a2afcd16" dependencies: From 2b5db56e06ec8c12ff71df4d3aea509902e5eae9 Mon Sep 17 00:00:00 2001 From: Kat Zhou <61153904+katz95@users.noreply.github.com> Date: Tue, 7 Apr 2020 16:24:39 +0200 Subject: [PATCH 49/58] Update design.md (#502) --- docs/design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design.md b/docs/design.md index f1b637269a..6512a19c34 100644 --- a/docs/design.md +++ b/docs/design.md @@ -27,7 +27,7 @@ The chart below details how we work. ***Stay tuned***: We are currently in the p The following diagram shows the relationship between the Backstage Design System and our foundation, which comprises of [Material UI](https://material-ui.com/) that is shaped by user experience and user interface decisions made by our Backstage Design Team. Also note, we encourage you to take the core experience we’ve crafted and add custom theming to better represent your organization! -![dls](docs/DLS.png) +![dls](DLS.png) ## ✅ Our Priorities From 27fd679b74b7cf39317f0ac5fbc2a951ee1e3e77 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 16:32:24 +0200 Subject: [PATCH 50/58] packages: no need to wrap plugin builds with build-cache --- packages/testUtils/package.json | 3 +-- packages/theme/package.json | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/testUtils/package.json b/packages/testUtils/package.json index 96c8de5974..3a96fca117 100644 --- a/packages/testUtils/package.json +++ b/packages/testUtils/package.json @@ -19,8 +19,7 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts", "scripts": { - "build:watch": "backstage-cli plugin:build --watch", - "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", "test": "backstage-cli test" }, diff --git a/packages/theme/package.json b/packages/theme/package.json index 6dfaaa8d3e..450f8f6f86 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -19,8 +19,7 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts", "scripts": { - "build:watch": "backstage-cli plugin:build --watch", - "build": "backstage-cli build-cache -- backstage-cli plugin:build", + "build": "backstage-cli plugin:build", "lint": "backstage-cli lint" }, "devDependencies": { From 022e71575bc89853ea082aacd57d7fa5a631eb5d Mon Sep 17 00:00:00 2001 From: Paul Marbach Date: Tue, 7 Apr 2020 10:56:19 -0400 Subject: [PATCH 51/58] fix: circular dependency came back --- packages/testUtils/package.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/testUtils/package.json b/packages/testUtils/package.json index 96c8de5974..dec47b082a 100644 --- a/packages/testUtils/package.json +++ b/packages/testUtils/package.json @@ -26,7 +26,6 @@ }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.2", - "@backstage/core": "^0.1.1-alpha.2", "@backstage/theme": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", "@testing-library/jest-dom": "^4.2.4", @@ -40,7 +39,6 @@ "react-router-dom": "^5.1.2" }, "peerDependencies": { - "@backstage/core": "^0.1.1-alpha.2", "@backstage/theme": "^0.1.1-alpha.2", "@material-ui/core": "^4.9.1", "@testing-library/jest-dom": "^4.2.4", From f7a09ceb966c41f4e7f6707ac648b350d4f43979 Mon Sep 17 00:00:00 2001 From: Kat Zhou <61153904+katz95@users.noreply.github.com> Date: Tue, 7 Apr 2020 16:58:07 +0200 Subject: [PATCH 52/58] Update design.md (#507) --- docs/design.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/design.md b/docs/design.md index 6512a19c34..e1a2af84b1 100644 --- a/docs/design.md +++ b/docs/design.md @@ -41,12 +41,12 @@ This is the universal user experience that is shared amongst all Backstage users In the beginning, most of our issues will be centered around creating universal components for our Backstage Design System and adding them to our Storybook so plugin developers can reference them. We’ll also be creating issues that are focused on building up our core Backstage user experience. We’ll be labeling our issues in GitHub with ‘design’ and/or ‘storybook’ - so feel free to browse and tackle the tasks that interest you. If you have any questions regarding an issue, you can ask them in the comments section of the issue or on [Discord](https://discord.gg/PefUsZ). We absolutely adore our external contributors and will send you virtual semlas for your contributions! ### Request a component. -Create an issue (label it design and assign it to katz95) or send us a message on [Discord](https://discord.gg/PefUsZ) (#design channel) with details of what the component is and its relevant use cases. Your request will be reviewed by our design team and you should hear back from us within 1-2 business days. We’ll get back to you and let you know whether your requested component will get picked up by our team as something to be added to our design system. +Create an issue (label it design and assign it to katz95) or send us a message on [Discord](https://discord.gg/PefUsZ) (*#design* channel) with details of what the component is and its relevant use cases. Your request will be reviewed by our design team and you should hear back from us within 1-2 business days. We’ll get back to you and let you know whether your requested component will get picked up by our team as something to be added to our design system. ## ✏️ Resources **[Storybook](http://storybook.backstage.io/)** - where you can view our components. If you’d like to help build up our design system, you can also add components we’ve designed to the Storybook as well. -**[Discord](https://discord.gg/PefUsZ)** - all design questions should be directed to the #design channel. +**[Discord](https://discord.gg/PefUsZ)** - all design questions should be directed to the *#design* channel. **Documentation** - Patterns (stay tuned) From 29094608c2453d1e463d43e7be3ee070ee2c0248 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 16:31:08 +0200 Subject: [PATCH 53/58] packages/testUtils: renamed dir to test-utils --- packages/{testUtils => test-utils}/.npmrc | 0 packages/{testUtils => test-utils}/README.md | 0 packages/{testUtils => test-utils}/package.json | 0 packages/{testUtils => test-utils}/src/index.ts | 0 packages/{testUtils => test-utils}/src/setupTests.ts | 0 packages/{testUtils => test-utils}/src/testUtils/Keyboard.js | 0 packages/{testUtils => test-utils}/src/testUtils/Keyboard.test.js | 0 packages/{testUtils => test-utils}/src/testUtils/index.tsx | 0 packages/{testUtils => test-utils}/src/testUtils/logCollector.js | 0 .../{testUtils => test-utils}/src/testUtils/mockBreakpoint.ts | 0 packages/{testUtils => test-utils}/tsconfig.json | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename packages/{testUtils => test-utils}/.npmrc (100%) rename packages/{testUtils => test-utils}/README.md (100%) rename packages/{testUtils => test-utils}/package.json (100%) rename packages/{testUtils => test-utils}/src/index.ts (100%) rename packages/{testUtils => test-utils}/src/setupTests.ts (100%) rename packages/{testUtils => test-utils}/src/testUtils/Keyboard.js (100%) rename packages/{testUtils => test-utils}/src/testUtils/Keyboard.test.js (100%) rename packages/{testUtils => test-utils}/src/testUtils/index.tsx (100%) rename packages/{testUtils => test-utils}/src/testUtils/logCollector.js (100%) rename packages/{testUtils => test-utils}/src/testUtils/mockBreakpoint.ts (100%) rename packages/{testUtils => test-utils}/tsconfig.json (100%) diff --git a/packages/testUtils/.npmrc b/packages/test-utils/.npmrc similarity index 100% rename from packages/testUtils/.npmrc rename to packages/test-utils/.npmrc diff --git a/packages/testUtils/README.md b/packages/test-utils/README.md similarity index 100% rename from packages/testUtils/README.md rename to packages/test-utils/README.md diff --git a/packages/testUtils/package.json b/packages/test-utils/package.json similarity index 100% rename from packages/testUtils/package.json rename to packages/test-utils/package.json diff --git a/packages/testUtils/src/index.ts b/packages/test-utils/src/index.ts similarity index 100% rename from packages/testUtils/src/index.ts rename to packages/test-utils/src/index.ts diff --git a/packages/testUtils/src/setupTests.ts b/packages/test-utils/src/setupTests.ts similarity index 100% rename from packages/testUtils/src/setupTests.ts rename to packages/test-utils/src/setupTests.ts diff --git a/packages/testUtils/src/testUtils/Keyboard.js b/packages/test-utils/src/testUtils/Keyboard.js similarity index 100% rename from packages/testUtils/src/testUtils/Keyboard.js rename to packages/test-utils/src/testUtils/Keyboard.js diff --git a/packages/testUtils/src/testUtils/Keyboard.test.js b/packages/test-utils/src/testUtils/Keyboard.test.js similarity index 100% rename from packages/testUtils/src/testUtils/Keyboard.test.js rename to packages/test-utils/src/testUtils/Keyboard.test.js diff --git a/packages/testUtils/src/testUtils/index.tsx b/packages/test-utils/src/testUtils/index.tsx similarity index 100% rename from packages/testUtils/src/testUtils/index.tsx rename to packages/test-utils/src/testUtils/index.tsx diff --git a/packages/testUtils/src/testUtils/logCollector.js b/packages/test-utils/src/testUtils/logCollector.js similarity index 100% rename from packages/testUtils/src/testUtils/logCollector.js rename to packages/test-utils/src/testUtils/logCollector.js diff --git a/packages/testUtils/src/testUtils/mockBreakpoint.ts b/packages/test-utils/src/testUtils/mockBreakpoint.ts similarity index 100% rename from packages/testUtils/src/testUtils/mockBreakpoint.ts rename to packages/test-utils/src/testUtils/mockBreakpoint.ts diff --git a/packages/testUtils/tsconfig.json b/packages/test-utils/tsconfig.json similarity index 100% rename from packages/testUtils/tsconfig.json rename to packages/test-utils/tsconfig.json From 53fed5a17c7e256d83753945ec7a03674cbb812f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 18:05:21 +0200 Subject: [PATCH 54/58] backstage/cli: add common tsconfig --- packages/cli/config/tsconfig.json | 11 +++++++++++ packages/cli/templates/default-app/tsconfig.json | 9 +-------- tsconfig.json | 10 +--------- 3 files changed, 13 insertions(+), 17 deletions(-) create mode 100644 packages/cli/config/tsconfig.json diff --git a/packages/cli/config/tsconfig.json b/packages/cli/config/tsconfig.json new file mode 100644 index 0000000000..abb10087ca --- /dev/null +++ b/packages/cli/config/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@spotify/web-scripts/config/tsconfig.json", + "exclude": ["**/*.test.*"], + "compilerOptions": { + "allowJs": true, + "noEmit": false, + "declarationMap": true, + "incremental": true, + "module": "es6" + } +} diff --git a/packages/cli/templates/default-app/tsconfig.json b/packages/cli/templates/default-app/tsconfig.json index 25f61cc933..f278b2777d 100644 --- a/packages/cli/templates/default-app/tsconfig.json +++ b/packages/cli/templates/default-app/tsconfig.json @@ -1,10 +1,3 @@ { - "extends": "@spotify/web-scripts/config/tsconfig.json", - "exclude": ["**/*.test.*"], - "compilerOptions": { - "allowJs": true, - "noEmit": false, - "declarationMap": true, - "incremental": true - } + "extends": "@backstage/cli/config/tsconfig.json" } diff --git a/tsconfig.json b/tsconfig.json index abb10087ca..f278b2777d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,3 @@ { - "extends": "@spotify/web-scripts/config/tsconfig.json", - "exclude": ["**/*.test.*"], - "compilerOptions": { - "allowJs": true, - "noEmit": false, - "declarationMap": true, - "incremental": true, - "module": "es6" - } + "extends": "@backstage/cli/config/tsconfig.json" } From 1275e438771e1b45727821345768854965808f74 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 18:05:45 +0200 Subject: [PATCH 55/58] packages/cli: fix WelcomePage using old props in scaffolded app --- .../plugins/welcome/src/components/WelcomePage/WelcomePage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx b/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx index 19f9ee55e2..d9ef0524c6 100644 --- a/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx +++ b/packages/cli/templates/default-app/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx @@ -36,7 +36,7 @@ const WelcomePage: FC<{}> = () => { - + You now have a running instance of Backstage! From 43d3388238b7d05c8a3e901aae4fc08a124e3456 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 18:06:21 +0200 Subject: [PATCH 56/58] packages/cli: fix scaffolded app main and types fields --- .../templates/default-app/plugins/welcome/package.json.hbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 581f5e41ce..9593a4007f 100644 --- a/packages/cli/templates/default-app/plugins/welcome/package.json.hbs +++ b/packages/cli/templates/default-app/plugins/welcome/package.json.hbs @@ -1,8 +1,8 @@ { "name": "plugin-welcome", "version": "0.0.0", - "main": "dist/cjs/index.js", - "types": "dist/cjs/index.d.ts", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts", "private": true, "scripts": { "build": "backstage-cli plugin:build", From 89494ad4cd62f8b5679efc72a970ce184d4648cd Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 18:06:49 +0200 Subject: [PATCH 57/58] packages/cli: updated deps of scaffolded app plugin --- .../default-app/plugins/welcome/package.json.hbs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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 9593a4007f..9069ce6f8e 100644 --- a/packages/cli/templates/default-app/plugins/welcome/package.json.hbs +++ b/packages/cli/templates/default-app/plugins/welcome/package.json.hbs @@ -11,11 +11,17 @@ }, "devDependencies": { "@backstage/cli": "^{{version}}", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", "@types/testing-library__jest-dom": "5.0.2" }, "dependencies": { - "@material-ui/lab": "4.0.0-alpha.45", "@backstage/core": "^{{version}}", - "@backstage/theme": "^{{version}}" + "@backstage/theme": "^{{version}}", + "@material-ui/core": "^4.9.1", + "@material-ui/icons": "^4.9.1", + "react": "16.13.1", + "react-dom": "16.13.1", + "react-router-dom": "5.1.2" } } From 3bc25560f76d55a72d7afaaea85297ef14e24f0b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Apr 2020 18:39:08 +0200 Subject: [PATCH 58/58] packages/cli: treat untracked input dirs as dirty --- packages/cli/src/commands/build-cache/cache.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/cli/src/commands/build-cache/cache.ts b/packages/cli/src/commands/build-cache/cache.ts index a6c51671f5..4dddaedc6f 100644 --- a/packages/cli/src/commands/build-cache/cache.ts +++ b/packages/cli/src/commands/build-cache/cache.ts @@ -96,6 +96,10 @@ export class Cache { for (const quotedInputPath of quotedInputPaths) { const output = await runPlain(`git ls-tree HEAD ${quotedInputPath}`); const [, , sha] = output.split(/\s+/, 3); + // If we can't get a tree sha it means we're outside of tracked files, so treat as dirty + if (!sha) { + return undefined; + } trees.push(sha); }