Angular | Working with Angular Examples
General
On the Angular Website, there are a lot of examples.

You could download each of them and look around. In this post, i will show you to do this at once for all examples.
So, we will
- get list of all examples
- download zip files of examples
- extract examples
Preparation
First, we define some variables for the Chrom Browser and the resulting output files.
# Mac OS CHROME=/Applications/Chromium.app/Contents/MacOS/Chromium # Windows WSL CHROME='/mnt/c/Program Files/Google/Chrome/Application/chrome.exe' LISTOFZIPS=listofzips
Download List of examples
Next, we will download the list of examples from https://angular.io/guide/example-apps-list.
This is not a static html file. The list will be created dynamically when viewing the page. So, only download the page with or wget curl does not help, because we need to run the JavaScript code in the browser to create the list.
Therefore, we will use Chrome in headless mode: Load the page and dump the contents of the page (dom) into a file
do_get_list() {
"$CHROME" --headless --dump-dom https://angular.io/guide/example-apps-list | tr '>' '>\n ' >${LISTOFZIPS}.html
echo "##. Download List of Examples"
echo " #Examples: ($(grep 'href="guide/' listofzips.html | wc -l))"
}Then, we will extract all the links to the zip examples files.
A quick look into the html file shows, that the html code with the links looks like this:

We need the part in the href of the <a tag.
- First, we will split the html file, so that every html tag will be on a separate line.
- Then, we will cut out only the parts between apostrophes.
- Then, we search all files containing “.zip” and the end of the line ($)
do_extract() {
cat ${LISTOFZIPS}.html |\
tr ' ' '\n' |\
cut -d \" -f2 |\
grep -e '.zip$' > ${LISTOFZIPS}
echo "generated/zips/component-overview/component-overview.zip" >> ${LISTOFZIPS}
echo "##. Extract zip files ($(wc -l ${LISTOFZIPS}))"
echo " #Examples: ($(wc -l ${LISTOFZIPS}))"
}The result will be the list of URL’s for each example.

Download Examples
Next, for each of these example $ZIP, we will download the zip from the Angular Website with wget -q https://angular.io/$ZIP
do_download() {
echo "##. Download Zips"
(
rm -rf zip
mkdir -p zip
cd zip
cat ../$LISTOFZIPS | while read ZIP
do
echo "Download $ZIP"
if [ ! -f $ZIP ]; then
wget -q https://angular.io/$ZIP
fi
done
rm *.zip.1
)
}Extract ZIP Files
do_unzip() {
echo "##. Unzip"
rm -rf src
mkdir -p src
find zip -type f -exec basename {} \; | \
while read FILE
do
FLDR=${FILE/.zip/}
echo unzip zip/$FILE -d src/$FLDR
unzip zip/$FILE -d src/$FLDR
done
}Upgrade all node modules to current version
We will need toe tool npm-check-updates for this.
Install it with
npm install -g npm-check-updates
ncu updates all packages to the latest version. Some Angular Examples require an earlier version of Typescript, so, after upgrade i changes the Typescript Version to 4.9.5
do_upgrade() {
echo "##. Upgrade"
(
cd src
ls | \
while read FLDR
do
echo " $FLDR"
(
cd $FLDR
ncu -u
# "typescript": "~4.9.3"
sed -i '1,$s/"typescript": ".*"/"typescript": "~4.9.5"/' package.json
# pnpm install
)
done
)
}Appendix
The code for the complete script is here:
#!/bin/bash
# Mac OS
CHROME=/Applications/Chromium.app/Contents/MacOS/Chromium
# Windows WSL
CHROME='/mnt/c/Program Files/Google/Chrome/Application/chrome.exe'
LISTOFZIPS=listofzips
do_get_list() {
"$CHROME" --headless --dump-dom https://angular.io/guide/example-apps-list | tr '>' '>\n ' >${LISTOFZIPS}.html
echo "##. Download List of Examples"
echo " #Examples: ($(grep 'href="guide/' listofzips.html | wc -l))"
}
do_extract() {
cat ${LISTOFZIPS}.html |\
tr ' ' '\n' |\
cut -d \" -f2 |\
grep -e '.zip$' > ${LISTOFZIPS}
echo "generated/zips/component-overview/component-overview.zip" >> ${LISTOFZIPS}
echo "##. Extract zip files ($(wc -l ${LISTOFZIPS}))"
echo " #Examples: ($(wc -l ${LISTOFZIPS}))"
}
do_download() {
echo "##. Download Zips"
(
rm -rf zip
mkdir -p zip
cd zip
cat ../$LISTOFZIPS | while read ZIP
do
echo "Download $ZIP"
if [ ! -f $ZIP ]; then
wget -q https://angular.io/$ZIP
fi
done
rm *.zip.1
)
}
do_unzip() {
echo "##. Unzip"
rm -rf src
mkdir -p src
find zip -type f -exec basename {} \; | \
while read FILE
do
FLDR=${FILE/.zip/}
echo unzip zip/$FILE -d src/$FLDR
unzip zip/$FILE -d src/$FLDR
done
}
do_upgrade() {
echo "##. Upgrade"
(
cd src
ls | \
while read FLDR
do
echo " $FLDR"
(
cd $FLDR
ncu -u
# "typescript": "~4.9.3"
sed -i '1,$s/"typescript": ".*"/"typescript": "~4.9.5"/' package.json
# pnpm install
)
done
)
}
case "$1" in
"get") do_get_list;;
"extract") do_extract;;
"download") do_download;;
"unzip") do_unzip;;
"upgrade") do_upgrade;;
*)
echo "run $0 get|extract|download|unzip";;
esac
