comment déployer angular2 app construit en utilisant angular-cli

j'ai créé n nouvelle application angulaire en utilisant angular-cli.

j'ai terminé l'application et la prévisualiser en utilisant ng-serve, ça fonctionne parfaitement.

Après que j'ai utilisé ng bâtir-prod, qui génère le 'dist' dossier. Quand je mets ce dossier dans xampp pour l'exécuter, il ne fonctionne pas. J'ai trouvé qu'il n'y a pas de *.les fichiers js, qui devraient y être après *.ts ->*.js conversion (je suppose).

j'ai joint la capture d'écran, dans lequel sur le côté gauche il est affichage du dossier src ayant tout .les fichiers ts, au milieu, montrent le dossier' dist ' et la capture d'écran du navigateur.

veuillez me guider comment puis-je générer une application entièrement fonctionnelle à partir d'angular-cli, que je peux exécuter sur mon serveur xampp.

Capture d'écran:

Screenshot

35
demandé sur curious 2016-06-07 10:14:14

9 réponses

méthode 1(populaire) : Si vous utilisez angular-cli, alors

ng build --prod

fera l'affaire. Ensuite, vous pouvez copier tout .dist dossier à votre dossier de serveur

méthode 2 :

vous pouvez utiliser le serveur http pour servir votre application . Pour installer le serveur http

npm install http-server -g

et après aller dans votre dossier de projet

http-server ./dist 

il servira tous les fichiers de votre dossier. vous pouvez vérifier le terminal quelle adresse ip et quel port vous pouvez utiliser pour accéder à l'application. Maintenant, ouvrez votre navigateur et tapez

ip-adress:port/index.html

l'Espérons, vous aidera :)

Bonus: Si vous voulez vous déployer à heroku. S'il Vous Plaît passer par ce tutoriel détaillé https://medium.com/@ryanchenkie_40935/angular-cli-deployment-host-your-angular-2-app-on-heroku-3f266f13f352

49
répondu pd farhad 2017-08-07 14:40:35

Pour ceux qui recherchent une réponse pour l'hébergement IIS...

Construisez votre projet

ng build --prod

copier tout le contenu du ./ dist dossier dans le dossier racine de votre site Web en maintenant la structure du dossier à l'intérieur ./dist (c'est à dire - ne bouge pas rien). En utilisant la version bêta-18 de l'angular-cli tous les actifs (images dans mon cas) ont été copiés ./dist/actifs au cours de la construction et ont été référencé correctement dans leur contenant des composants.

16
répondu Mike Devenney 2016-11-01 14:09:39

consultez votre index.fichier html et éditer cette ligne

<base href="/[your-project-folder-name]/dist/"> 

votre contenu doit être chargé correctement. Vous pouvez ensuite charger les styles globalement

vous devriez mettre la base href comme recommandé par Johan

ng build --prod --bh /[your-project-folder-name]/dist/
9
répondu Babalola Tiwa 2016-12-17 16:11:49

Voici un exemple avec Heroku:

  1. créer un compte Heroku et installer le CLI

  2. Déplacer angular-cli dep dependenciespackage.json (de sorte qu'il soit installé lorsque vous poussez vers Heroku.

  3. Ajouter un postinstall script qui sera exécuté ng build quand le code est poussé vers Heroku. Ajoutez également une commande de démarrage pour un serveur de noeuds qui sera créé à l'étape suivante. Cela placera les fichiers statiques pour l'application dans un dist répertoire sur le serveur et démarrer l'application après.

"scripts": {
  // ...
  "start": "node server.js",
  "postinstall": "ng build --aot -prod"
}
  1. créer un serveur Express pour servir l'application.
// server.js
const express = require('express');
const app = express();
// Run the app by serving the static files
// in the dist directory
app.use(express.static(__dirname + '/dist'));
// Start the app by listening on the default
// Heroku port
app.listen(process.env.PORT || 8080);
  1. créer une télécommande Heroku et pousser pour déployer l'application.
heroku create
git add .
git commit -m "first deploy"
git push heroku master

Voici un rapide article je l'ai fait a plus de détails, y compris la façon de forcer les demandes d'utilisation de HTTPS et comment gérer PathLocationStrategy :)

4
répondu cienki 2016-12-16 03:18:32

Utiliser ng build--bh drapeau

définit la balise de base href à / myUrl / dans votre index.html:

ng build --base-href /myUrl/
ng build --bh /myUrl/
3
répondu Johan Blomgren 2017-03-15 10:04:07

j'utilise la dernière version de L'Angular-CLI (au moment de cette réponse son 1.0.0 Beta-18)

la façon dont cette version Fonctionne est qu'elle met tout dans les fichiers pack et les appelle dans l'index.fichier html. Après cela, vous devez copier vos actifs sur le dossier dist (pour une raison quelconque, il ne le fait pas). Enfin, vérifiez votre base href assurez-vous que le jeu pour ce qu'il doit être mis à la et il devrait fonctionner. C'est ce qui a fonctionné pour moi et J'ai testé sur les deux Apache et le nœud.

1
répondu Jonathon Harrelson 2016-10-27 14:27:23

j'utilise actuellement Angular-CLI 1.0.0-beta.32,3

dans le répertoire racine de votre projet npm install http-server-g

après une installation réussie ng bâtir-prod

sur la réussite de la course à pied serveur http ./ dist

1
répondu esom 2017-02-23 15:28:24

Si quelqu'un travaille avec Nginx, alors voici la solution:

supposez que vous voulez déployer votre application angulaire à L'hôte:http://example.com et PORT:8080 Note-L'hôte et le PORT peuvent être différents dans votre cas.

assurez-vous que vous avez <base href="/"> à vous de l'index.étiquette de tête html.

  1. tout d'abord, allez sur votre chemin angulaire repo (i.e. /home/user/helloWorld) à votre machine.

  2. Puis construire /dist pour votre production serveur à l'aide de la commande suivante:

    ng build --prod --base-href http://example.com:8080

  3. maintenant, Copiez le dossier /dist (i.e./home/user/helloWorld / dist) à partir de la position angulaire de votre machine vers la machine distante où vous voulez héberger votre serveur de production.

  4. maintenant, connectez-vous à votre serveur distant et ajoutez la configuration suivante du serveur nginx.

    server {
    
        listen 8080;
    
        server_name http://example.com;
    
        root /path/to/your/dist/location;
    
        # eg. root /home/admin/helloWorld/dist
    
        index index.html index.htm;
    
        location / {
    
            try_files $uri $uri/ /index.html;
    
            # This will allow you to refresh page in your angular app. Which will not give error 404.
    
        }
    
    }
    
  5. maintenant redémarrez nginx.

  6. C'est ça !! Maintenant vous pouvez accéder votre angulaire application à http://example.com:8080

J'espère que ce sera utile.

0
répondu viks 2018-04-04 16:59:54

le serveur http ne supporte pas le routage côté client, donc rien d'autre que votre URL de base ne va fonctionner. Au lieu de cela, vous pouvez utiliser angulaires-http-server:

npm install -g angular-http-server
ng build --prod
cd dist
angular-http-server

ceci ne doit être utilisé que pour tester l'application en local avant de le déployer sur un serveur Web. Pour savoir comment déployer l'application sur un serveur Web, consultez le Angulaire.io article sur le déploiement, qui traite des considérations à prendre en compte lors de la construction en vue d'un déploiement et fournit des configurations pour une variété de serveurs Web utilisés couramment dans la production.

0
répondu alan 2018-05-30 17:23:02