Como você implanta aplicativos angulares?

Como é que se implanta aplicações angulares quando se chega à fase de produção?

Todos os guias que vi até agora (mesmo em angular.io ) estão a contar com um servidor lite para servir e browserSync para reflectir as alterações - mas quando terminar com o desenvolvimento, como pode publicar a aplicação?

importo todos os ficheiros {[[0]} compilados na página index.html ou faço minify com o gulp? Eles funcionarão? Preciso de SystemJS na versão de produção?

Author: Lazar Ljubenović, 2016-02-21

17 answers

Na verdade, estás aqui a tocar em duas perguntas numa. O primeiro é como hospedar sua aplicação. E como @toskv mencionou sua pergunta realmente muito ampla para ser respondida e depende de inúmeras coisas diferentes. O segundo é mais específico-como preparar a versão de implantação da aplicação. Você tem várias opções aqui:
  1. posicione-se como está. Apenas isso - sem minificação, concatenação, mutilação de nomes etc. Transpile todo o seu projecto de ts, copie todos os seus resultados js / css/... fontes + dependências para o servidor de hospedagem e seus estão prontos para ir.
  2. Utilizar ferramentas especiais de agrupamento. Como webpack ou systemjs builder. Eles vêm com todas as possibilidades que estão faltando em #1. Você pode embalar todo o seu código de aplicação em apenas um par de js / css/... ficheiros que referiste no teu html. Systemjs buider ainda permite que você se livrar da necessidade de incluir systemjs como parte de seu pacote de implantação.

SIM, é muito provável que precises de implantar os systemjs e um monte de outras bibliotecas externas como parte do seu pacote. E sim você será capaz de agrupá-los em apenas alguns arquivos js que você referencia a partir de sua página html. Você não tem que referenciar todos os seus arquivos JS compilados a partir da página - systemjs como um carregador de módulo irá cuidar disso.

Eu sei que parece lamacento - para ajudar a começar com o #2 Aqui estão duas aplicações de amostra muito boas:

Construtor de SystemJS: semente de angular2

WebPack: iniciador angular2 webpack

Veja como eles fazem isso-e espero que isso irá ajudá-lo a encontrar a sua maneira de empacotar aplicativos que você faz.

 77
Author: Amid, 2016-02-22 21:11:23
Resposta simples. Usar o CLI Angular e emitir o
ng build 

Comando no directório raiz do seu projecto. O site será criado no diretório dist e você pode implantá-lo em qualquer servidor web.

Isto irá ser compilado para teste, se tiver configurações de produção na sua aplicação deverá usar

ng build --prod

Isto irá construir o projecto no directório dist e isto pode ser empurrado para o servidor.

Muito aconteceu desde que publiquei esta resposta. O CLI é finalmente com um 1.0.0, então seguindo este guia vá atualizar o seu projeto deve acontecer antes de tentar construir. https://github.com/angular/angular-cli/wiki/stories-rc-update
 78
Author: Nate Bunney, 2017-08-16 20:30:00
Com o CLI Angular é fácil. Um exemplo para Heroku:
  1. Criar uma conta Heroku e instalar o CLI

  2. Mova o dep angular-cli para o dependencies em package.json (para que ele seja instalado quando você empurrar para Heroku.

  3. Adicione um script postinstall que irá correr ng build quando o código for empurrado para Heroku. Adicione também um comando inicial para um servidor de nó que será criado no passo seguinte. Isto irá colocar os ficheiros estáticos da aplicação num dist directório no servidor e iniciar a aplicação depois.

"scripts": {
  // ...
  "start": "node server.js",
  "postinstall": "ng build --aot -prod"
}
  1. crie um servidor expresso para servir a aplicação.
// 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);
    Cria um comando Heroku e empurra para desviar a aplicação.
heroku create
git add .
git commit -m "first deploy"
git push heroku master

Aqui está um rápido writeup eu fiz que tem mais detalhes, incluindo como forçar os pedidos a usar HTTPS e como lidar PathLocationStrategy :)

 20
Author: cienki, 2016-12-15 19:08:57
Espero que isto possa ajudar, e espero poder tentar isto durante a semana.
  1. Criar uma aplicação Web no Azure
  2. Criar uma aplicação Angular 2 Em vs código.
  3. Pacote web para pacote.js.
  4. Obter o perfil Azure publicado no Sítio xml
  5. Configurar o Azure-implantar usando https://www.npmjs.com/package/azure-deploy {[14] } com o perfil do local.
  6. posicionar.
  7. Prova o creme.
 7
Author: user6402762, 2016-05-31 04:03:51

A fim de enviar o seu aplicativo Angular2 para um servidor de produção, em primeiro lugar, certifique-se de que o seu aplicativo é executado localmente na sua máquina.

O aplicativo Angular2 também pode ser implantado como um aplicativo de nó.

Então, crie um servidor de pontos de entrada de nó.js / app.js (o meu exemplo 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'));
});

Adicione também express como uma dependência no seu pacote.ficheiro json.

Depois, coloque-o no seu ambiente preferido.

Eu montei um pequeno blogue para implantação em O. seguir a ligação
 4
Author: Oduwole Oluwasegun, 2017-04-11 16:17:27

Obtém-se o pacote de produção de carregamento mais pequeno e rápido compilando com o compilador de tempo anterior, e tree-shake/minify com rollup, como mostrado no livro de receitas de AOT angular aqui: https://angular.io/docs/ts/latest/cookbook/aot-compiler.html

Isto também está disponível com o Angular-CLI como foi dito nas respostas anteriores, mas se não fez a sua aplicação usando o CLI, deve seguir o livro de receitas.

Também tenho um exemplo de trabalho com materiais e SVG gráficos (apoiados por Angular2) que inclui um pacote criado com o AOT cookbook. Você também encontra toda a configuração e scripts necessários para criar o pacote. Olha para isto. https://github.com/fintechneo/angular2-templates/

Fiz um vídeo rápido que demonstra a diferença entre o número de ficheiros e o tamanho de uma compilação compilada da AoT contra um ambiente de desenvolvimento. Ele mostra o projeto do repositório github acima. Você pode vê-lo aqui: https://youtu.be/ZoZDCgQwnmQ
 2
Author: Peter Salomonsen, 2017-01-19 06:58:28

Para implantar sua aplicação no IIS siga os passos abaixo.

Passo 1: compilar a sua aplicação Angular usando o comando ng build --prod

Passo 2: Depois da compilação, todos os ficheiros são guardados na pasta dist do local da sua aplicação.

Passo 3: Criar uma pasta em C:\inetpub\wwwroot pelo nome QRCode .

Passo 4: copiar o conteúdo da pasta dist para C:\inetpub\wwwroot\QRCode pasta.

Passo 5: Abrir o gestor do IIS usando comando (Janela + R) e tipo inetmgr Carregue em OK.

Passo 6: carregue com o botão direito no Sítio Web por omissão e carregue em Adicione a aplicação.

Passo 7: indique a alcunha 'QRCode' e defina a localização física para C:\inetpub\wwwroot\QRCode

Passo 8: abrir índice.html e encontrar a linha href= " \ " e remover'\'.

Passo 9: procure agora a aplicação em qualquer navegador.

Você também pode acompanhar o vídeo para melhor compreensao.

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

 2
Author: Avadhesh Maurya, 2018-01-26 07:54:25

A implantação do Angular 2 em azure é fácil

  1. Executar ng build --prod , o que irá gerar uma pasta dist com tudo o que estiver dentro de alguns ficheiros, incluindo o índice.galeria.

  2. Crie um grupo de recursos e uma aplicação web dentro dele.

  3. Coloque os seus ficheiros de pastas com FTP. Em azure ele vai procurar índice.html para executar a aplicação.

É isso. A tua aplicação está a funcionar !
 1
Author: Malatesh Patil, 2017-07-07 12:02:25

Com CLI Angular , pode usar o seguinte comando:

ng build --prod

Ele gera uma pasta dist com tudo o que você precisa para implantar a aplicação.

Se você não tem prática com servidores web, eu recomendo que você use Angular para Cloud. Você só precisa comprimir a pasta dist como arquivo zip e carregá-lo na plataforma.

 1
Author: Bruno Oliveira, 2018-01-03 21:18:49

Distribuição Angular 2 nas páginas Github

Testar a implantação da mochila Angular2 em ghpages

Primeiro obter todos os arquivos relevantes a partir da pasta {[[0]} da sua aplicação, para mim foi a : + ficheiros css na pasta activos + principal.pacote.js + polifills.pacote.js + fornecedor.pacote.js

Em seguida, empurre estes arquivos no repo que você criou.

1 -- se quiser que a aplicação corra no directório raiz-crie um repo especial com o nome [Seu nome verdadeiro].github.io e coloca estes ficheiros no ramo principal

2 -- Onde, Como se quisesse criar esta página no sub directório ou num ramo diferente que não o root, crie um branch gh-pages e empurre estes ficheiros nesse ramo.

Em ambos os casos, a forma como acedemos a estas páginas será diferente.

Para o primeiro caso será https: / / [o seu nome de utilizador].github.io e para o segundo caso, será [Seu nome verdadeiro].github.io / [nome do Acordo de recompra] .

Se você quiser implantá-lo usando o segundo caso certifique-se de alterar o url de base do Índice.ficheiro html no dist, dado que todos os mapeamentos de rotas dependem da localização que indicar e deverá ser configurado como [/branchname].

Link para esta página

Https://rahulrsingh09.github.io/Deployment

Acordo De Recompra Git

Https://github.com/rahulrsingh09/Deployment

 1
Author: Rahul Singh, 2018-03-05 14:10:14

Uso com para sempre:

  1. compilar a sua aplicação Angular com o angular-cli para destilar a pasta ng build --prod --output-path ./dist
  2. Criar servidor.js ficheiro na sua localização Angular da aplicação:

    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. Começar para sempre forever start server.js

É tudo! a sua candidatura deve estar a correr!
 1
Author: Yakir Tsuberi, 2018-08-21 13:30:17

Se testares uma aplicação como eu em localhost ou vais ter alguns problemas com a página branca {[8] } uso isto:

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

Explicação:

ng build

Build app mas há muitos espaços, tabs e outras coisas. Para o servidor não é importante como o código parece. É por isso que uso:

ng build --prod --build-optimizer 

Este código de fabrico e redução de tamanho [--build-optimizer permite reduzir mais código].

Então no final eu adiciono --base-href="http://127.0.0.1/my-app/" para mostrar a aplicação onde está a 'moldura principal' [em simples palavra]. Com ele você pode ter até mesmo vários aplicativos angulares em qualquer pasta.

 1
Author: Michał Wojtanis, 2018-08-31 10:02:31

Para uma forma rápida e barata de hospedar uma aplicação angular, tenho usado a hospedagem Firbase. É gratuito no primeiro nível e muito fácil de implantar novas versões usando o Firebase CLI. Este artigo aqui explica os passos necessários para implantar sua app angular de produção 2 para Firebase: https://medium.com/codingthesmartway-com-blog/hosting-angular-2-applications-on-firebase-f194688c978d

Em resumo, você executa {[[0]} o que cria uma pasta dist no pacote e que é o pasta que é enviada para o servidor Firebase.

 0
Author: npesa92, 2017-07-01 17:19:46

A partir de 2017 A melhor maneira é usar angular-cli (v1.4.4) para o seu projecto angular.

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

Você não precisa adicionar -- AOT explicitamente como seu ativado por padrão com --prod.E o uso de -- output-hashing é como sua preferência pessoal em relação à explosão de cache.

Você poderia adicionar explicitamente O suporte de CDN adicionando:

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

Se planeia usar CDN para hospedagem, o que é consideravelmente rápido.

 0
Author: Kay, 2017-10-02 15:42:04

Eu diria que muitas pessoas com experiência na Web antes de angular, são usadas para implantar seus artefatos web dentro de uma guerra (ou seja, jQuery e html dentro de um projeto Java/Spring). Acabei fazendo isso para contornar a questão do CORS, depois de tentar Manter meus projetos angulares e de descanso separados.

A minha solução era mover todos os conteúdos angulares (4), gerados com CLI, do meu-app para MyJavaApplication/angular. Em seguida, modifiquei a minha compilação Maven para usar Maven-resources-plugin para mover o conteúdo de /angular / dist para a raiz da minha distribuição (ou seja, $project.construir.directory} / MyJavaApplication). O Angular carrega recursos da raiz da guerra por padrão.

Quando comecei a adicionar roteamento ao meu projecto angular, modifiquei ainda mais a criação do maven para copiar o índice.html de /dist para WEB-INF / app. E, adicionou um controlador Java que redireciona todas as chamadas do lado do servidor para indexar.

 0
Author: Wallace Howery, 2018-01-03 21:36:22

Se implantar a sua aplicação no Apache (servidor Linux) para que possa seguir os seguintes passos : Siga as seguintes etapas :

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

Passo 2 . (Copiar o dist para o servidor) em seguida, dest pasta criada, copiar a pasta dist e implantá-lo no diretório raiz do servidor.

Passo 3 . Cria o ficheiro .htaccess na pasta de topo e cola isto na pasta .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, 2018-03-27 05:48:28

Basta seguir o link abaixo,

Muda o teu Índice.localização dos ficheiros do Programa de páginas html Muda o teu componente.localização em html aumenta o seu erro de obtenção que não conseguiu encontrar a localização

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

 -2
Author: Muhamed Shafeeq, 2017-05-04 10:53:19