18aa173d39
Previously, when `NgPackagesInstaller` needed to install the local Angular packages to a project, it assumed the `dist/packages-dist/` would exist and contain up-to-date built packages. I.e. it was up to the user to have built the packages first (by running the appropriate script). However, many people not familiar with the `aio/` infrastructure assumed that `yarn build-local` or `yarn build-with-ivy` would take care of all the necessary steps. To avoid getting confusing errors (or worse yet, using outdated local packages), `NgPackagesInstaller` now has an option to build the packages before using them. One caveat is that the build script does not currently work on Windows, so a warning is printed instead, letting the user know they need to (somehow) take care of it themselves. NOTE 1: Since the build script is using bazel, running it should not be expensive if the directory is up-to-date (i.e. no changes have been made to source code after the last build). NOTE 2: This commit adds support for `--build-packages`, but does not change the default behavior (not building the packages). It will be turned on in a subsequent commit. PR Close #31985 |
||
---|---|---|
.. | ||
cli-patches | ||
example-zipper | ||
examples | ||
firebase-test-utils | ||
ng-packages-installer | ||
stackblitz-builder | ||
transforms | ||
README.md | ||
RELEASE.md | ||
tslint.json |
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.