Pour Angular 6+, les choses ont un peu changé.
Définir où ng build génère les fichiers d'application
La configuration de Cli se fait maintenant dans angular.json (remplacé par .angular-cli.json) dans le répertoire racine de votre espace de travail. Le chemin de sortie dans le fichier angular.json par défaut devrait ressembler à ceci (lignes non pertinentes supprimées) :
{
"projects": {
"my-app-name": {
"architect": {
"options": {
"outputPath": "dist/my-app-name",
Évidemment, cela va générer votre application dans WORKSPACE/dist/my-app-name. Modifiez outputPath si vous préférez un autre répertoire.
Vous pouvez écraser le chemin de sortie en utilisant des arguments de ligne de commande (par exemple, pour les travaux CI) :
ng build -op dist/example
ng build --output-path=dist/example
S.a. https://github.com/angular/angular-cli/wiki/build
Héberger une application angulaire dans un sous-répertoire
La définition du chemin de sortie indique à Angular où placer les fichiers "compilés", mais quelle que soit la façon dont vous modifiez le chemin de sortie, lorsque vous exécutez l'application, Angular continuera de supposer que l'application est hébergée dans le racine du document du serveur Web.
Pour le faire fonctionner dans un sous-répertoire, vous devrez définir le href de base.
Dans angular.json :
{
"projects": {
"my-app-name": {
"architect": {
"options": {
"baseHref": "/my-folder/",
Cli :
ng build --base-href=/my-folder/
Si vous ne savez pas où l'application sera hébergée au moment de la construction, vous pouvez modifier la balise base dans l'index.html généré.
Voici un exemple de la façon dont nous le faisons dans notre conteneur docker :
entrypoint.sh
if [ -n "${BASE_PATH}" ]
then
files=( $(find . -name "index.html") )
cp -n "${files[0]}" "${files[0]}.org"
cp "${files[0]}.org" "${files[0]}"
sed -i "s*<base href=\"/\">*<base href=\"${BASE_PATH}\">*g" "${files[0]}"
fi