From 1aac2445417b4d179c9b6a287decc7491db0c1f0 Mon Sep 17 00:00:00 2001
From: Doug Parker <dgp1130@users.noreply.github.com>
Date: Tue, 12 Nov 2019 11:36:52 -0800
Subject: [PATCH] docs(@angular/cli): Adds developer documentation.

I wrote down my understanding of the best ways to build/run/test/debug this repository.

A couple other random things included here:
* Removed an extraneous `debugger;` statement which I kept hitting.
* Removed the `watch` scripts which are no longer used and don't need to be supported.
* Removed `yarn test-cli-e2e`, as it alters the $PATH and can use the wrong `ng` instance.
---
 README.md                                     | 102 +++++++++++++++++-
 docs/images/run-configurations.png            | Bin 0 -> 28019 bytes
 package.json                                  |   2 -
 scripts/templates/readme.ejs                  | 102 +++++++++++++++++-
 .../extra-properties/factory.ts               |   1 -
 5 files changed, 200 insertions(+), 7 deletions(-)
 create mode 100644 docs/images/run-configurations.png

diff --git a/README.md b/README.md
index c6b65b18b2..22eb60c2d9 100644
--- a/README.md
+++ b/README.md
@@ -44,16 +44,114 @@ analyze your code.
 # Getting Started - Local Development
 
 ## Installation
+
 To get started locally, follow these instructions:
 
 1. If you haven't done it already, [make a fork of this repo](https://github.com/angular/angular-cli/fork).
 1. Clone to your local computer using `git`.
 1. Make sure that you have Node 10.13 or later installed. See instructions [here](https://nodejs.org/en/download/).
 1. Make sure that you have `yarn` installed; see instructions [here](https://yarnpkg.com/lang/en/docs/install/).
-1. Run `yarn` (no arguments) from the root of your clone of this project.
-1. Run `yarn link` to add all custom scripts we use to your global install.
+1. Run `yarn` (no arguments) from the root of your clone of this project to install dependencies.
+
+## Building and Installing the CLI
+
+To make a local build:
+
+```shell
+yarn build --local
+```
+
+This generates a number of tarballs in the `dist/` directory. To actually use
+the locally built tools, switch to another repository reproducing the specific
+issue you want to fix (or just generate a local repo with `ng new`). Then
+install the locally built packages:
+
+```shell
+cd "${EXAMPLE_ANGULAR_PROJECT_REPO}"
+npm install -D ${CLI_REPO}/dist/*.tgz
+```
+
+Builds of this example project will use tooling created from the previous local
+build and include any local changes. When using the CLI, it will automatically
+check for a local install and use that if present. This means you can just run:
+
+```shell
+npm install -g @angular/cli
+```
+
+to get a global install of the latest CLI release. Then running any `ng` command
+in the example project will automatically find and use the local build of the
+CLI.
+
+Note: If you are testing `ng update`, be aware that installing all the tarballs
+will also update the framework (`@angular/core`) to the latest version. In this
+case, simply install the CLI alone with
+`npm install -D ${CLI_REPO}/dist/_angular_cli.tgz`, that way the rest of the
+project remains to be upgraded with `ng update`.
+
+## Debugging
+
+To debug an invocation of the CLI, [build and install the CLI for an example
+project](#building-and-installing-the-cli), then run the desired `ng` command
+as:
+
+```shell
+node --inspect-brk node_modules/.bin/ng ...
+```
+
+This will trigger a breakpoint as the CLI starts up. You can connect to this
+using the supported mechanisms for your IDE, but the simplest option is to open
+Chrome to [chrome://inspect](chrome://inspect) and then click on the `inspect`
+link for the `node_modules/.bin/ng` Node target.
+
+Unfortunately, the CLI dynamically `require()`'s other files mid-execution, so
+the debugger is not aware of all the source code files before hand. As a result,
+it is tough to put breakpoints on files before the CLI loads them. The easiest
+workaround is to use the `debugger;` statement to stop execution in the file you
+are interested in, and then you should be able to step around and set breakpoints
+as expected.
+
+## Testing
+
+There are three different test suites which can be run locally:
+
+* Unit tests
+  * Run: `yarn test --full`
+  * Debug: `yarn debug:test --full`
+* Large tests
+  * Run: `yarn test-large --full`
+  * Debug: `yarn debug:test-large --full`
+* End to end tests
+  * Run: `node tests/legacy-cli/run_e2e.js`
+  * Run subset of tests: `node tests/legacy-cli/run_e2e.js tests/legacy-cli/e2e/tests/i18n/ivy-localize-*`
+
+When running the debug commands, Node will stop and wait for a debugger to
+attach. You can attach your IDE to the debugger to stop on breakpoints and step through the code. Also see [IDE Specific Usage](#ide-specific-usage) for a
+simpler debug story.
+
+When debugging a specific test, change `describe()` or `it()` to `fdescribe()`
+and `fit()` to focus execution to just that one test. This will keep the output clean and speed up execution by not running irrelevant tests.
+
+## IDE Specific Usage
+
+Some additional tips for developing in specific IDEs.
+
+### Intellij IDEA / WebStorm
+
+To load the project in Intellij products, simply `Open` the repository folder.
+Do **not** `Import Project`, because that will overwrite the existing
+configuration.
+
+Once opened, the editor should automatically detect run configurations in the
+workspace. Use the drop down to choose which one to run and then click the `Run`
+button to start it. When executing a debug target, make sure to click the
+`Debug` icon to automatically attach the debugger (if you click `Run`, Node will
+wait forever for a debugger to attach).
+
+![Intellij IDEA run configurations](docs/images/run-configurations.png)
 
 ## Creating New Packages
+
 Adding a package to this repository means running two separate commands:
 
 1. `schematics devkit:package PACKAGE_NAME`. This will update the `.monorepo` file, and create the
diff --git a/docs/images/run-configurations.png b/docs/images/run-configurations.png
new file mode 100644
index 0000000000000000000000000000000000000000..b81207f163a243606f453c04c05439225f47fcf2
GIT binary patch
literal 28019
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

literal 0
HcmV?d00001

diff --git a/package.json b/package.json
index ab58784d79..0570138460 100644
--- a/package.json
+++ b/package.json
@@ -33,8 +33,6 @@
     "templates": "node ./bin/devkit-admin templates",
     "test": "node ./bin/devkit-admin test",
     "test-large": "node ./bin/devkit-admin test --large --spec-reporter",
-    "test-cli-e2e": "node ./tests/legacy-cli/run_e2e",
-    "test:watch": "nodemon --watch packages -e ts ./bin/devkit-admin test",
     "validate": "node ./bin/devkit-admin validate",
     "validate-commits": "./bin/devkit-admin validate-commits",
     "preinstall": "node ./tools/yarn/check-yarn.js",
diff --git a/scripts/templates/readme.ejs b/scripts/templates/readme.ejs
index 5138da33d4..67f46f3703 100644
--- a/scripts/templates/readme.ejs
+++ b/scripts/templates/readme.ejs
@@ -52,16 +52,114 @@ analyze your code.
 # Getting Started - Local Development
 
 ## Installation
+
 To get started locally, follow these instructions:
 
 1. If you haven't done it already, [make a fork of this repo](https://github.com/angular/angular-cli/fork).
 1. Clone to your local computer using `git`.
 1. Make sure that you have Node 10.13 or later installed. See instructions [here](https://nodejs.org/en/download/).
 1. Make sure that you have `yarn` installed; see instructions [here](https://yarnpkg.com/lang/en/docs/install/).
-1. Run `yarn` (no arguments) from the root of your clone of this project.
-1. Run `yarn link` to add all custom scripts we use to your global install.
+1. Run `yarn` (no arguments) from the root of your clone of this project to install dependencies.
+
+## Building and Installing the CLI
+
+To make a local build:
+
+```shell
+yarn build --local
+```
+
+This generates a number of tarballs in the `dist/` directory. To actually use
+the locally built tools, switch to another repository reproducing the specific
+issue you want to fix (or just generate a local repo with `ng new`). Then
+install the locally built packages:
+
+```shell
+cd "${EXAMPLE_ANGULAR_PROJECT_REPO}"
+npm install -D ${CLI_REPO}/dist/*.tgz
+```
+
+Builds of this example project will use tooling created from the previous local
+build and include any local changes. When using the CLI, it will automatically
+check for a local install and use that if present. This means you can just run:
+
+```shell
+npm install -g @angular/cli
+```
+
+to get a global install of the latest CLI release. Then running any `ng` command
+in the example project will automatically find and use the local build of the
+CLI.
+
+Note: If you are testing `ng update`, be aware that installing all the tarballs
+will also update the framework (`@angular/core`) to the latest version. In this
+case, simply install the CLI alone with
+`npm install -D ${CLI_REPO}/dist/_angular_cli.tgz`, that way the rest of the
+project remains to be upgraded with `ng update`.
+
+## Debugging
+
+To debug an invocation of the CLI, [build and install the CLI for an example
+project](#building-and-installing-the-cli), then run the desired `ng` command
+as:
+
+```shell
+node --inspect-brk node_modules/.bin/ng ...
+```
+
+This will trigger a breakpoint as the CLI starts up. You can connect to this
+using the supported mechanisms for your IDE, but the simplest option is to open
+Chrome to [chrome://inspect](chrome://inspect) and then click on the `inspect`
+link for the `node_modules/.bin/ng` Node target.
+
+Unfortunately, the CLI dynamically `require()`'s other files mid-execution, so
+the debugger is not aware of all the source code files before hand. As a result,
+it is tough to put breakpoints on files before the CLI loads them. The easiest
+workaround is to use the `debugger;` statement to stop execution in the file you
+are interested in, and then you should be able to step around and set breakpoints
+as expected.
+
+## Testing
+
+There are three different test suites which can be run locally:
+
+* Unit tests
+  * Run: `yarn test --full`
+  * Debug: `yarn debug:test --full`
+* Large tests
+  * Run: `yarn test-large --full`
+  * Debug: `yarn debug:test-large --full`
+* End to end tests
+  * Run: `node tests/legacy-cli/run_e2e.js`
+  * Run subset of tests: `node tests/legacy-cli/run_e2e.js tests/legacy-cli/e2e/tests/i18n/ivy-localize-*`
+
+When running the debug commands, Node will stop and wait for a debugger to
+attach. You can attach your IDE to the debugger to stop on breakpoints and step through the code. Also see [IDE Specific Usage](#ide-specific-usage) for a
+simpler debug story.
+
+When debugging a specific test, change `describe()` or `it()` to `fdescribe()`
+and `fit()` to focus execution to just that one test. This will keep the output clean and speed up execution by not running irrelevant tests.
+
+## IDE Specific Usage
+
+Some additional tips for developing in specific IDEs.
+
+### Intellij IDEA / WebStorm
+
+To load the project in Intellij products, simply `Open` the repository folder.
+Do **not** `Import Project`, because that will overwrite the existing
+configuration.
+
+Once opened, the editor should automatically detect run configurations in the
+workspace. Use the drop down to choose which one to run and then click the `Run`
+button to start it. When executing a debug target, make sure to click the
+`Debug` icon to automatically attach the debugger (if you click `Run`, Node will
+wait forever for a debugger to attach).
+
+![Intellij IDEA run configurations](docs/images/run-configurations.png)
 
 ## Creating New Packages
+
 Adding a package to this repository means running two separate commands:
 
 1. `schematics devkit:package PACKAGE_NAME`. This will update the `.monorepo` file, and create the
diff --git a/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts b/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts
index 6c1beda510..a0fe71e473 100644
--- a/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts
+++ b/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts
@@ -10,7 +10,6 @@ import { SchematicContext, Tree } from '@angular-devkit/schematics';
 
 export default function(options: {}) {
   return (tree: Tree, context: SchematicContext) => {
-    debugger;
     // We pass information back to the test.
     tree.create(
       (context.schematic.description as any).extra,  // tslint:disable-line:no-any