¿Cómo se implementan las aplicaciones de Angular?


¿Cómo se implementan las aplicaciones de Angular una vez que llegan a la fase de producción?

Todas las guías que he visto hasta ahora (incluso en angular.io ) están contando con un servidor lite para servir y BrowserSync para reflejar los cambios, pero cuando termine con el desarrollo, ¿cómo puede publicar la aplicación?

¿Importo todos los archivos compilados .js en la página index.html o los minimizo usando gulp? ¿Funcionarán? ¿Necesito SystemJS en la versión de producción?

Author: Lazar Ljubenović, 2016-02-21

17 answers

En realidad estás aquí tocando dos preguntas en una. El primero es cómo alojar su aplicación. Y como @toskv mencionó su pregunta realmente demasiado amplia para ser respondida y depende de muchas cosas diferentes. El segundo es más específico: cómo preparar la versión de implementación de la aplicación. Usted tiene varias opciones aquí:

  1. Despliegue tal como está. Solo eso: sin minificación, concatenación, destrozo de nombres, etc. Transpile todo su proyecto ts, copie todo su resultado js / css/... fuentes + dependencias al servidor de alojamiento y su están listos para ir.
  2. Despliegue utilizando herramientas especiales de agrupación. Como webpack o systemjs builder. Vienen con todas las posibilidades que faltan en #1. Puede empaquetar todo el código de su aplicación en solo un par de js / css/... archivos a los que hace referencia en su html. Systemjs buider incluso le permite deshacerse de la necesidad de incluir systemjs como parte de su paquete de implementación.

Sí, lo más probable es que necesite implementar systemjs y un montón de otras bibliotecas externas como parte de su paquete. Y sí, podrá agruparlos en solo un par de archivos js que consulte desde su página html. Sin embargo, no tiene que hacer referencia a todos sus archivos js compilados desde la página - systemjs como un cargador de módulos se encargará de eso.

Sé que suena embarrado - para ayudarte a comenzar con el #2 aquí hay dos aplicaciones de muestra realmente buenas:

SystemJS builder: angular2 seed

WebPack: angular2 webpack starter

Mira cómo lo hacen - y con suerte esto te ayudará a encontrar tu manera de agrupar aplicaciones que haces.

 77
Author: Amid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 21:11:23

Respuesta simple. Utilice la CLI Angular y emita el

ng build 

Comando en el directorio raíz de su proyecto. El sitio se creará en el directorio dist y puede implementarlo en cualquier servidor web.

Esto se compilará para prueba, si tiene configuraciones de producción en su aplicación, debe usar

ng build --prod

Esto construirá el proyecto en el directorio dist y esto se puede enviar al servidor.

Mucho ha sucedido desde que publiqué por primera vez esta respuesta. El CLI es finalmente en una 1.0.0 así que siguiendo esta guía ir actualizar su proyecto debe suceder antes de intentar construir. https://github.com/angular/angular-cli/wiki/stories-rc-update

 78
Author: Nate Bunney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-16 20:30:00

Con la CLI Angular es fácil. Un ejemplo para Heroku:

  1. Crea una cuenta Heroku e instala la CLI

  2. Mueve el angular-cli dep al dependencies en package.json (para que se instale cuando envíes a Heroku.

  3. Agregue un script postinstall que se ejecutará ng build cuando el código se envíe a Heroku. También agregue un comando start para un servidor de nodos que se creará en el siguiente paso. Esto colocará los archivos estáticos para la aplicación en un dist directorio en el servidor e inicie la aplicación después.

"scripts": {
  // ...
  "start": "node server.js",
  "postinstall": "ng build --aot -prod"
}
  1. Cree un servidor Express para servir la aplicación.
// 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. Cree un control remoto Heroku y presione para depoy la aplicación.
heroku create
git add .
git commit -m "first deploy"
git push heroku master

Aquí hay un resumen rápido Que hice que tiene más detalles, incluyendo cómo forzar las solicitudes para usar HTTPS y cómo manejar PathLocationStrategy :)

 20
Author: cienki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-15 19:08:57

Espero que esto pueda ayudar, y espero poder probar esto durante la semana.

  1. Crear aplicación web en Azure
  2. Crear Angular 2 aplicación en vs código.
  3. Webpack para agrupar.js.
  4. Descargar Azure site perfil publicado xml
  5. Configurar Azure-deploy usando https://www.npmjs.com/package/azure-deploy con el perfil del sitio.
  6. Despliegue.
  7. Pruebe la crema.
 7
Author: user6402762,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-31 04:03:51

Para implementar su aplicación Angular2 en un servidor de producción, en primer lugar, asegúrese de que su aplicación se ejecute localmente en su máquina.

La aplicación Angular2 también se puede implementar como una aplicación de nodo.

Por lo tanto, cree un servidor de archivos de punto de entrada de nodo.js / app.js (mi ejemplo usa 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'));
});

También agregue express como una dependencia en su paquete.archivo json.

Luego despliégalo en tu entorno preferido.

He creado un pequeño blog para la implementación en IIS. seguir enlace

 4
Author: Oduwole Oluwasegun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-11 16:17:27

Obtienes el paquete de producción de carga más pequeño y rápido compilando con el compilador Ahead of Time,y tree-shake / minify con rollup como se muestra en el libro de cocina angular AOT aquí: https://angular.io/docs/ts/latest/cookbook/aot-compiler.html

Esto también está disponible con Angular-CLI como se dijo en respuestas anteriores, pero si no ha hecho su aplicación utilizando la CLI, debe seguir el libro de cocina.

También tengo un ejemplo de trabajo con materiales y gráficos SVG (respaldado por Angular2) que incluye un paquete creado con el libro de cocina AOT. También encontrará toda la configuración y los scripts necesarios para crear el paquete. Échale un vistazo aquí: https://github.com/fintechneo/angular2-templates/

Hice un video rápido que demuestra la diferencia entre el número de archivos y el tamaño de una compilación compilada AoT vs un entorno de desarrollo. Muestra el proyecto del repositorio de github anterior. Puedes verlo aquí: https://youtu.be/ZoZDCgQwnmQ

 2
Author: Peter Salomonsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-19 06:58:28

Para implementar su aplicación en IIS, siga los pasos a continuación.

Paso 1: Compila tu aplicación Angular usando command ng build pro prod

Paso 2: Después de compilar todos los archivos se almacenan en la carpeta dist de la ruta de la aplicación.

Paso 3: Crea una carpeta en C:\inetpub\wwwroot por nombre QRCode.

Paso 4: Copie el contenido de la carpeta dist a C:\inetpub\wwwroot\QRCode carpeta.

Paso 5: Abra el administrador de IIS usando command (Window + R) and type inetmgr click OK.

Paso 6: Haga clic derecho en el Sitio Web predeterminado y haga clic en Agregar aplicación.

Paso 7: Introduzca el nombre del alias 'QRCode' y establezca la ruta física en C:\inetpub\wwwroot\QRCode .

Paso 8: Abrir índice.html archivo y encontrar la línea href="\" y eliminar '\'.

Paso 9: Ahora busque la aplicación en cualquier navegador.

También puede seguir el video para mejor comprensión.

Url del vídeo: https://youtu.be/F8EI-8XUNZc

 2
Author: Avadhesh Maurya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-26 07:54:25

Implementar Angular 2 en azure es fácil

  1. Ejecute ng build pro prod , que generará una carpeta dist con todo incluido dentro de unos pocos archivos, incluido index.HTML.

  2. Cree un grupo de recursos y una aplicación web dentro de él.

  3. Coloque sus archivos de carpetas dist usando FTP. En azure buscará index.html para ejecutar la aplicación.

Eso es todo. Su aplicación se está ejecutando !

 1
Author: Malatesh Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-07 12:02:25

Con Angular CLI , puede usar el siguiente comando:

ng build --prod

Genera una carpeta dist con todo lo que necesita para implementar la aplicación.

Si no tiene práctica con servidores web, le recomiendo usar Angular to Cloud. Solo necesita comprimir la carpeta dist como archivo zip y subirla a la plataforma.

 1
Author: Bruno Oliveira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-03 21:18:49

Despliegue de Angular 2 en páginas de Github

Probando el despliegue de Angular2 Webpack en ghpages

Primero obtenga todos los archivos relevantes de la carpeta dist de su aplicación, para mí fue el : + archivos css en la carpeta assets + principal.paquete.js + polyfills.paquete.js + proveedor.paquete.js

Luego empuje estos archivos en el repositorio que ha creado.

1 If Si desea que la aplicación se ejecute en el directorio raíz, cree un repositorio especial con el nombre [yourgithubusername]. github.io y empuje estos archivos en la rama master

2 Where Donde si desea crear estas páginas en el subdirectorio o en una rama diferente a la raíz, cree una rama gh-pages y empuje estos archivos en esa rama.

En ambos casos la forma en que accedemos a estas páginas desplegadas será diferente.

Para el Primer caso será https://[yourgithubusername].github.io y para el segundo caso se será [yourgithubusername]. github.io/[Nombre del repositorio] .

Si supongamos que desea implementarlo utilizando el segundo caso, asegúrese de cambiar la url base del índice.archivo html en la dist, ya que todas las asignaciones de ruta dependen de la ruta que se le dé y debe establecerse en [/branchname].

Enlace a esta página

Https://rahulrsingh09.github.io/Deployment

Repositorio de Git

Https://github.com/rahulrsingh09/Deployment

 1
Author: Rahul Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-05 14:10:14

Uso con para siempre :

  1. Construya su aplicación Angular con angular-cli a la carpeta dist ng build --prod --output-path ./dist
  2. Crear servidor.archivo js en la ruta de acceso de la aplicación 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);
    
  3. Empieza para siempre forever start server.js

Eso es todo! su aplicación debe estar en ejecución!

 1
Author: Yakir Tsuberi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-21 13:30:17

Si prueba la aplicación como yo en localhost o tendrá algunos problemas con página blanca en blanco utilizo esto:

ng build --prod --build-optimizer --base-href="http://127.0.0.1/my-app/"

Explicación:

ng build

Construir aplicación, pero hay muchos espacios, pestañas y otras cosas. Para el servidor no es importante cómo se ve el código. Por eso uso:

ng build --prod --build-optimizer 

Esto hace que el código salga para la producción y reduce el tamaño [--build-optimizer] permite reducir más código].

Así que al final agrego --base-href="http://127.0.0.1/my-app/" para mostrar la aplicación donde está 'main frame' [en simple palabra]. Con él puede tener incluso varias aplicaciones angulares en cualquier carpeta.

 1
Author: Michał Wojtanis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-31 10:02:31

Para una forma rápida y barata de alojar una aplicación angular, he estado utilizando el alojamiento Firbase. Es gratis en el primer nivel y muy fácil de implementar nuevas versiones utilizando la Firebase CLI. Este artículo explica los pasos necesarios para implementar su aplicación production angular 2 en Firebase: https://medium.com/codingthesmartway-com-blog/hosting-angular-2-applications-on-firebase-f194688c978d

En resumen, ejecuta ng build --prod que crea una carpeta dist en el paquete y esa es la carpeta que se implementa en Firebase Hosting.

 0
Author: npesa92,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-01 17:19:46

A partir de 2017, la mejor manera es usar angular-cli (v1.4.4) para su proyecto angular.

ng build --prod --env=prod --aot --build-optimizer --output-hashing none

No es necesario agregar explicitly aot explícitamente ya que está activado por defecto con --prod.Y el uso de output output-hashing es según sus preferencias personales con respecto a la explosión de caché.

Podría agregar explícitamente soporte de CDN agregando:

 --deploy-url "https://<your-cdn-key>.cloudfront.net/"

Si planea usar CDN para el alojamiento, que es considerablemente rápido.

 0
Author: Kay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-02 15:42:04

Yo diría que muchas personas con experiencia Web antes de angular, están acostumbrados a desplegar sus artefactos web dentro de una guerra (es decir, jquery y html dentro de un proyecto Java/Spring). Terminé haciendo esto para evitar el problema de CORS, después de intentar mantener mis proyectos angular y REST separados.

Mi solución fue mover todos los contenidos de angular (4), generados con CLI, de my-app a MyJavaApplication/angular. Entonces puedo modificar mi Maven build usar maven-recursos-plugin para mover el contenido de / angular / dist a la raíz de mi distribución (es decir $project.construir.directory} / MyJavaApplication). Angular carga recursos desde la raíz de la guerra de forma predeterminada.

Cuando comencé a agregar enrutamiento a mi proyecto angular, modificé aún más maven build para copiar el índice.html de / dist a WEB-INF / app. Y, se agregó un controlador Java que redirige todas las llamadas rest del lado del servidor a index.

 0
Author: Wallace Howery,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-03 21:36:22

Si implementa su aplicación en Apache (servidor Linux) para que pueda seguir los siguientes pasos : Siga los siguientes pasos :

Paso 1 : ng build --prod --env=prod

Paso 2 . (Copia dist en el servidor) a continuación, dist carpeta creada, copia dist carpeta e implementarlo en el directorio raíz del servidor.

Paso 3 . Crea el archivo .htaccess en la carpeta raíz y pégalo en el .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>
 0
Author: Sumit Jaiswal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-27 05:48:28

Simplemente siga el siguiente enlace,

Cambie su Índice.rutas de archivo de script de página html Cambia tu componente.ruta html en caso de que su error de obtención que no pudo encontrar la ubicación

Https://angular.io/docs/ts/latest/guide/deployment.html#! # dev-deploy

 -2
Author: Muhamed Shafeeq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-04 10:53:19