Comment déployez-vous Angular les applications dès leur phase de production?
Tous les guides que j'ai vus jusqu'à présent (même sur angular.io ) comptent sur un serveur léger pour servir et browserSync pour refléter les changements - mais lorsque vous avez terminé le développement, comment pouvez-vous publier le app?
Dois-je importer tous les fichiers .js
compilés sur la page index.html
ou est-ce que je les réduis en utilisant gulp? Vont-ils travailler? Ai-je besoin de SystemJS dans la version de production?
Vous êtes ici en train de toucher deux questions en une. Le premier est comment héberger votre application. Et comme @toskv a mentionné sa question vraiment trop large pour y répondre et dépend de nombreuses choses différentes. La seconde est plus spécifique - comment préparer la version de déploiement de l’application. Vous avez plusieurs options ici:
Oui, vous aurez probablement besoin de déployer systemjs et un groupe d’autres bibliothèques externes dans votre paquet. Et oui, vous pourrez les regrouper dans quelques fichiers js que vous référencez à partir de votre page html. Vous n'êtes pas obligé de référencer tous vos fichiers js compilés à partir de la page, mais systemjs en tant que chargeur de modules s'en chargera.
Je sais que cela a l'air boueux - pour vous aider à démarrer avec le n ° 2, voici deux exemples très bons d'applications:
Constructeur SystemJS: angular2 seed
WebPack: démarreur angular2 webpack
Regardez comment ils le font - et espérons que cela vous aidera à trouver le moyen de regrouper les applications que vous créez.
Réponse simple. Utilisez la Angular CLI et émettez le
ng build
commande dans le répertoire racine de votre projet. Le site sera créé dans le répertoire dist et vous pourrez le déployer sur n’importe quel serveur Web.
Cela construira pour le test, si vous avez des paramètres de production dans votre application, vous devez utiliser
ng build --prod
Cela construira le projet dans le répertoire dist
et pourra être envoyé au serveur.
Il s'est passé beaucoup de choses depuis que j'ai posté cette réponse pour la première fois. La CLI étant enfin à 1.0.0, suivez donc ce guide pour mettre à niveau votre projet avant que vous essayiez de le construire. https://github.com/angular/angular-cli/wiki/stories-rc-update
Avec la Angular CLI, rien de plus simple. Un exemple pour Heroku:
Créer un compte Heroku et installer le CLI
Déplacez le angular-cli
dep vers le dependencies
dans package.json
(afin qu'il soit installé lorsque vous appuyez sur Heroku.
Ajoutez un script postinstall
qui exécutera ng build
lorsque le code sera transmis à Heroku. Ajoutez également une commande de démarrage pour un serveur Node qui sera créé à l'étape suivante. Cela placera les fichiers statiques de l'application dans un répertoire dist
sur le serveur, puis démarrera par la suite.
"scripts": {
// ...
"start": "node server.js",
"postinstall": "ng build --aot -prod"
}
// 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);
heroku create
git add .
git commit -m "first deploy"
git Push heroku master
Voici un rapide écriture Je l'ai fait qui a plus de détails, y compris comment forcer les demandes à utiliser HTTPS et comment gérer PathLocationStrategy
:)
J'utilise avec pour toujours :
ng build --prod --output-path ./dist
Créez un fichier server.js dans le chemin de votre application Angular:
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(__dirname + '/dist'));
app.get('/*', function(req,res) {
res.sendFile(path.join(__dirname + '/dist/index.html'));
});
app.listen(80);
Commencer pour toujours forever start server.js
C'est tout! votre application devrait être en cours d'exécution!
J'espère que cela aidera, et j'espère que je pourrai l'essayer pendant la semaine.
Afin de déployer votre application Angular2 sur un serveur de production, assurez-vous avant tout que votre application s'exécute localement sur votre ordinateur.
L'application Angular2 peut également être déployée en tant qu'application de nœud.
Donc, créez un fichier point d'entrée de noeud server.js/app.js (mon exemple utilise express)
var express = require('express'),
path = require('path'),
fs = require('fs');
var app = express();
var staticRoot = __dirname + '/';
app.set('port', (process.env.PORT || 3000));
app.use(express.static(staticRoot));
app.use(function(req, res, next){
// if the request is not html then move along
var accept = req.accepts('html', 'json', 'xml');
if(accept !== 'html'){
return next();
}
// if the request has a '.' assume that it's for a file, move along
var ext = path.extname(req.path);
if (ext !== ''){
return next();
}
fs.createReadStream(staticRoot + 'index.html').pipe(res);
});
app.listen(app.get('port'), function() {
console.log('app running on port', app.get('port'));
});
Ajoutez également express en tant que dépendance dans votre fichier package.json.
Puis déployez-le sur votre environnement préféré.
J'ai mis en place un petit blog pour le déploiement sur IIS. suivez lien
Pour déployer votre application dans IIS, suivez les étapes ci-dessous.
Étape 1: Créez votre application Angular à l’aide de la commande ng build --prod
Étape 2: Après la construction, tous les fichiers sont stockés dans le dossier dist du chemin de votre application.
Étape 3: Créez un dossier dans C:\inetpub\wwwroot par nom QRCode .
Étape 4: Copiez le contenu du dossier dist dans le dossier C:\inetpub\wwwroot\QRCode .
Étape 5: Ouvrez IIS Manager à l’aide de la commande (Fenêtre + R) et tapez inetmgr cliquez sur OK.
Étape 6: Cliquez avec le bouton droit sur Site Web par défaut et cliquez sur Ajouter une application .
Étape 7: Entrez le nom d’alias 'QRCode' et définissez le chemin physique sur C:\inetpub\wwwroot\QRCode .
Étape 8: Ouvrez le fichier index.html et recherchez la ligne href = "\" et supprimer '\'.
Étape 9: Parcourez maintenant l'application dans n'importe quel navigateur.
Vous pouvez également suivre la vidéo pour une meilleure compréhension.
URL de la vidéo: https://youtu.be/F8EI-8XUNZc
Si vous déployez votre application dans Apache (serveur Linux) afin de pouvoir suivre les étapes suivantes: Suivez les étapes suivantes :
Étape 1: ng build --prod --env=prod
étape 2. (Copier dist sur le serveur) puis le dossier dist créé, copiez-le et déployez-le dans le répertoire racine du serveur.
étape. Crée le fichier .htaccess
dans le dossier racine et le colle dans le fichier .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Si vous testez une application comme moi sur localhost ou si vous rencontrez des problèmes avec page blanche j'utilise ceci:
ng build --prod --build-optimizer --base-href="http://127.0.0.1/my-app/"
Explication:
ng build
Construire l'application, mais il y a beaucoup d'espaces, onglets et autres choses. Pour le serveur, l’importance du code n’est pas importante. C'est pourquoi j'utilise:
ng build --prod --build-optimizer
Cela rend le code pour la production et réduit la taille [--build-optimizer
] permet de réduire davantage de code].
Donc, à la fin, j’ajoute --base-href="http://127.0.0.1/my-app/"
pour afficher l’application où se trouve "image principale" [en termes simples]. Avec elle, vous pouvez même avoir plusieurs angular applications dans n'importe quel dossier.
Vous obtenez le lot de production avec le chargement le plus petit et le plus rapide en compilant avec le compilateur Ahead of Time, et en arborant un shake/minify avec un rollup, comme indiqué dans le angular AOT cookbook, ici: https: // angular .io/docs/ts/latest/cookbook/aot-compiler.html
Ceci est également disponible avec la CLI angulaire, comme indiqué dans les réponses précédentes, mais si vous n'avez pas créé votre application à l'aide de la CLI, vous devez suivre le livre de recettes.
J'ai aussi un exemple de travail avec des matériaux et des graphiques SVG (soutenu par Angular2) qui inclut un paquet créé avec le livre de recettes AOT. Vous trouverez également toutes les configurations et tous les scripts nécessaires pour créer le paquet. Découvrez-le ici: https://github.com/fintechneo/angular2-templates/
J'ai réalisé une vidéo rapide démontrant la différence entre le nombre de fichiers et la taille d'une version compilée AoT par rapport à un environnement de développement. Il montre le projet depuis le dépôt github ci-dessus. Vous pouvez le voir ici: https://youtu.be/ZoZDCgQwnmQ
Déploiement angulaire 2 dans les pages Github
Test du déploiement de Angular2 Webpack dans ghpages
Commencez par récupérer tous les fichiers pertinents dans le dossier dist
de votre application. Il s’agissait pour moi du: + fichiers css dans le dossier des actifs + main.bundle.js + polyfills.bundle.js + vendor.bundle.js
Ensuite, poussez ces fichiers dans le dépôt que vous avez créé.
1 - Si vous souhaitez que l'application s'exécute sur le répertoire racine - créez un référentiel spécial portant le nom [votregithubusus] .github.io et appuyez sur ces éléments. fichiers dans la branche master
2 - Où comme si vous vouliez créer ces pages dans le sous-répertoire ou dans une autre branche que la racine, créez une branche gh-pages et poussez ces fichiers dans cette branche.
Dans les deux cas, la manière dont nous accédons à ces pages déployées sera différente.
Pour le premier cas, il s'agira de https: // [votregithubusername] .github.io et pour le deuxième cas, il s'agira [votregithubusername] .github.io/[nom du repo] .
Si supposons que vous souhaitiez le déployer en utilisant le second cas, assurez-vous de changer l'URL de base du fichier index.html dans le fichier dist, car tous les mappages de route dépendent du chemin que vous indiquez et doivent être définis sur [/ branchname].
Lien vers cette page
https://rahulrsingh09.github.io/Deployment
Git Repo
Avec CLI angulaire , vous pouvez utiliser la commande suivante:
ng build --prod
Il génère un dossier dist avec tout ce dont vous avez besoin pour déployer l'application.
Si vous n’êtes pas habitué aux serveurs Web, je vous recommande d’utiliser Angular to Cloud . Il vous suffit de compresser le dossier dist en fichier Zip et de le télécharger sur la plate-forme.
Le déploiement de Angular 2 dans Azure est simple
Exécutez ng build --prod, qui générera un dossier dist avec tout ce qui est contenu dans quelques fichiers, dont index.html.
Créez un groupe de ressources et une application Web à l'intérieur de celui-ci.
Placez vos fichiers de dossiers dist via FTP. Dans Azure, il faudra rechercher index.html pour exécuter l'application.
C'est ça. Votre application est en cours d'exécution!
Pour un moyen rapide et économique d’héberger une application angular, j’utilise l’hébergement Firbase. C'est gratuit sur le premier niveau et très facile de déployer de nouvelles versions à l'aide de la CLI Firebase. Cet article explique ici les étapes nécessaires pour déployer votre production angular 2 sur Firebase: https://medium.com/codingthesmartway-com-blog/hosting-angular-2-applications-on -firebase-f194688c978d
En bref, vous exécutez ng build --prod
qui crée un dossier dist dans le package et qui est déployé dans Firebase Hosting.
À partir de 2017, le meilleur moyen consiste à utiliser angular-cli (v1.4.4) pour votre projet angular.
ng build --prod --env=prod --aot --build-optimizer --output-hashing none
Vous n'avez pas besoin d'ajouter explicitement --aot car il est activé par défaut avec --prod.Et l'utilisation de --output-hashing est selon vos préférences personnelles en ce qui concerne la rupture de la mémoire cache.
Vous pouvez explicitement ajouter CDN support en ajoutant:
--deploy-url "https://<your-cdn-key>.cloudfront.net/"
si vous envisagez d’utiliser CDN pour un hébergement qui est extrêmement rapide.
Je dirais que beaucoup de personnes ayant une expérience Web antérieure à angular, ont l'habitude de déployer leurs artefacts Web dans une guerre (c'est-à-dire jquery et html dans un projet Java/Spring). J'ai fini par le faire pour contourner le problème CORS, après avoir tenté de séparer mes projets angular et REST.
Ma solution a été de déplacer tous les contenus angular (4) générés avec CLI de my-app vers MyJavaApplication/angular. Ensuite, j'ai modifié ma construction Maven afin qu'elle utilise maven-resources-plugin pour déplacer le contenu de/angular/dist vers la racine de ma distribution (c'est-à-dire $ project.build.directory}/MyJavaApplication). Angular charge par défaut les ressources de la racine de la guerre.
Lorsque j'ai commencé à ajouter du routage à mon projet angular, j'ai modifié davantage la construction de maven pour copier index.html de/dist vers WEB-INF/app. Et ajouté un contrôleur Java qui redirige tous les appels restés côté serveur vers l'index.