Construções independentes do ambiente usando o modelo de webpack do Vue

9

Eu uso um servidor de compilação para construir meus projetos do Vue, usando o comando npm run build bem fornecido pelo modelo do Vue 2. O modelo Vue também fornece a capacidade de acessar dados específicos do ambiente que podem ser configurados em arquivos abaixo do diretório config . Coisas como prod.env.js , etc. Você acessa esses dados por meio de process.env.API_PREFIX conforme visto no manual do modelo.

Eu quero ser capaz de criar o código uma vez e, em seguida, implantar a mesma compilação (conforme definido pela saída em Dist ) em vários servidores, mas ter diferentes servidores usando configuração diferente (diferente API_PREFIX etc). Atualmente, as referências process.env são expandidas no momento da criação pelo compilador Webpack. Portanto, eu tenho que reconstruir para cada ambiente.

Eu posso pensar em algumas maneiras de fazer isso - obviamente o carregamento da configuração tem que acontecer em tempo de execução, e dado que ele é executado no navegador e tem que se referir a algum arquivo, ele teria que ser através de um Pedido AJAX para alguma configuração JSON estática servida pelo servidor da web separadamente ou similar. Mas eu estaria interessado em saber como alguém aqui lidaria com esse requisito.

    
por amoe 17.02.2017 в 18:14
fonte

1 resposta

2

Sem conhecer sua arquitetura específica, é difícil dar um conselho específico. Em vez disso, deixarei algumas idéias gerais.

Para fazer o que você quer de uma maneira sã, você provavelmente teria que derivar o prefixo do domínio no qual você está servindo o frontend.

Existem algumas coisas que você pode usar para isso, além de usar window.location no tempo de execução:

  • Caminhos relativos /api/myinformation - o prefixo será automaticamente derivado do domínio no qual o frontend é exibido.
  • Proxy local durante o desenvolvimento, pois talvez você não queira executar o backend no link localhost
  • Reescrita do caminho do proxy no nginx ou similar: link

Mesmo que isso não resolva seu caso específico, espere que ele tenha uma ideia do que está disponível.

    
por aristidesfl 03.03.2017 / 16:10
fonte