angular-cn/aio/tools
George Kalpakas 88d4b269b5 build(docs-infra): simplify `ExampleZipper` by removing `PackageJsonCustomizer` (#38192)
Previously, `ExampleZipper` (the tool used for creating ZIP archives
from our docs examples) used the `PackageJsonCustomizer` to generate
`package.json` files for each example type. This had the following
drawbacks:
- The generated files had to be kept up-to-date with the corresponding
  boilerplate files in `aio/tools/examples/shared/boilerplate/` and
  there was no easy way to find out when the files got out-of-sync.
- The `PackageJsonCustomizer` logic was non-trivial and difficult to
  reason about.
- The same information was duplicated in the boilerplate files and the
  customizer configuration files.

This setup was useful when we used a single `package.json` file for all
docs examples. Now, however, each example type can have its own
boilerplate `package.json` file, including scripts and dependencies
relevant to the example type. Therefore, it is no longer necessary to
generate `package.json` files for ZIP archives.

This commit eliminates the drawbacks mentioned above and simplifies the
`ExampleZipper` tool by removing `PackageJsonCustomizer` and re-using
the boilerplate `package.json` files for ZIP archives.

The changes in this commit also fix some ZIP archives that were
previously broken (for example due to missing dependencies).

PR Close #38192
2020-07-23 11:08:11 -07:00
..
cli-patches build(docs-infra): improve applying post-install patches (#37896) 2020-07-06 13:56:15 -07:00
example-zipper build(docs-infra): simplify `ExampleZipper` by removing `PackageJsonCustomizer` (#38192) 2020-07-23 11:08:11 -07:00
examples build(docs-infra): simplify `ExampleZipper` by removing `PackageJsonCustomizer` (#38192) 2020-07-23 11:08:11 -07:00
firebase-test-utils build(docs-infra): enable more TypeScript strictness flags (#32980) 2019-10-10 13:56:14 -07:00
ng-packages-installer build(docs-infra): use local version of Zone.js when testing against local packages (#35858) 2020-03-06 17:30:20 -05:00
stackblitz-builder fix(docs-infra): include correct dependencies in StackBlitz examples (#36071) 2020-03-20 13:56:26 -07:00
transforms build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
README.md build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00
RELEASE.md build(docs-infra): simplify `ExampleZipper` by removing `PackageJsonCustomizer` (#38192) 2020-07-23 11:08:11 -07:00
tslint.json refactor: remove tslint no-use-before-declare rule (#30288) 2019-05-07 10:25:36 -07:00

README.md

AIO project tooling

This document gives an overview of the tools that we use to generate the content for the angular.io website.

The application that actually renders this content can be found in the /aio/src folder. The handwritten content can be found in the /aio/content folder.

Each subfolder in this /aio/tools/ folder contains a self-contained tool and its configuration. There is a README.md file in each folder that describes the tool in more detail.

cli-patches

The AIO application is built using the Angular CLI tool. We are often trialling new features for the CLI, which we apply to the library after it is installed. This folder contains git patch files that contain these new features and a utility to apply those patches to the CLI library.

See the README.md for more details.

examples

Many of the documentation pages contain snippets of code examples. We extract these snippets from real working example applications, which are stored in subfolders of the /aio/content/examples folder. Each example can be built and run independently. Each example also provides e2e specs, which are run as part of our CI build tasks, to verify that the examples continue to work as expected, as changes are made to the core Angular libraries.

In order to build, run and test these examples independently we need to install dependencies into their sub-folder. Also there are a number of common boilerplate files that are needed to configure each example's project. We maintain these common boilerplate files centrally to reduce the amount of effort if one of them needs to change.

This examples tool folder contains two utilities:

  • example-boilerplate.js - install/remove the npm dependencies and boilerplate files into/from each of the examples' subfolders.
  • run-example-e2e.js - run the e2e tests for one or more examples

See the README.md for more details.

example-zipper

In the AIO application, we offer the reader the option to download each example as a full self-contained runnable project packaged as a zip file. These zip files are generated by the utility in this folder.

See the README.md for more details.

stackblitz-builder

In the AIO application, we can embed a running version of the example as a Stackblitz session. We can also provide a link to create a runnable version of the example in the Stackblitz editor.

See the README.md for more details.

transforms

All the content that is rendered by the AIO application, and some of its configuration files, are generated from source files by Dgeni. Dgeni is a general purpose documentation generation tool.

Markdown files in /aio/content, code comments in the core Angular source files and example files are processed and transformed into files that are consumed by the AIO application.

Dgeni is configured by "packages", which contain services and processors. Some of these packages are installed as node_modules from the dgeni-packages and some are specific to the AIO project.

The project specific packages are stored in the aio/tools/transforms folder. See the README.md for more details.