Como integrar vários aplicativos de reação de "recursos" ao repositório monolítico do PHP?

7

Temos um repositório mono-laravel e estamos migrando para um limpador, mais fácil de manter a reinicialização do desenvolvedor.

Recentemente, passamos a migrar nossas visualizações existentes baseadas em PHP para vários "recursos" baseados em React que vivem em um /reactdiretório e são organizados em /react/featureNamesubdiretórios. Isso significa que os controladores do Laravel lidam principalmente apenas com dados e autenticação.

Cada recurso é mantido por um ou mais desenvolvedores, tem suas próprias dependências, testes e funcionalidades.

No momento, estamos veiculando construções na raiz pública do nosso projeto, organizadas por recurso:

js/FeatureName.hashed.js
css/FeatureName.hased.css

o que funciona muito bem, exceto que compartilhamos muitos pacotes features. Reagir em si, reagir roteador etc.

Pretendemos usar o Laravel o mix.jsmáximo possível, mas hackers diretamente webpack.configtambém são uma opção.

Explorei a mix.extract()opção que nos permite definir compilações vendor.js separadas de outras lógicas de aplicativos, mas elas param por aí.

Então, aqui estão as minhas questões)

  1. Quais abordagens existem para gerenciar vários package.jsonarquivos que vivem em cada diretório de recursos
  2. Como identificamos pacotes comuns e os bloqueamos em um /package.jsonarquivo raiz . (Independentemente, todos os desenvolvedores já usam yarn)
  3. Como fazer isso com o mínimo de atrito possível para todos os desenvolvedores baseados em reação - para que eles simplesmente continuem com o que já estão fazendo e o DevOps lide com os bits mais difíceis?

Entendo que pode haver necessidade de mais informações, grite o que você precisa nos comentários e ficarei feliz em atualizar a pergunta.

Jason J. Nathan
fonte
Sugiro manter a pergunta mais importante neste post e perguntar aos outros em posts separados, eventualmente referindo-se a este post para não repetir os detalhes.
Dan Cornilescu
Eu também sugeriria abandonar o "melhor caminho" na pergunta - isso torna a pergunta baseada em opiniões, o que é desaprovado. Que tal substituí-lo por apenas "Como"? Se você conseguir várias respostas, o número de votos indicará qual é o mais popular, indicando qual foi o melhor para você , aceitando uma delas.
Dan Cornilescu 30/03

Respostas:

2
  1. Quais abordagens existem para gerenciar vários arquivos package.json que vivem em cada diretório de recursos

Pode-se deixar o package.json em todo diretório de recursos e permitir que o IC leia o package.json ao criar o aplicativo. Pode-se definir as versões das dependências no package.json para obter controle sobre o aplicativo. Se o aplicativo funcionar com a versão ABC de uma determinada biblioteca, é possível definir essa versão para impedir que uma atualização interrompa o aplicativo.

  1. Como identificamos pacotes comuns e os bloqueamos em um arquivo /package.json raiz. (Independentemente, todos os desenvolvedores já usam fios)

Discuta isso com a equipe e descubra qual é a melhor solução para todos. Várias soluções são possíveis. Todo mundo deveria estar feliz com uma certa abordagem.

  1. Como fazer isso com o mínimo de atrito possível para todos os desenvolvedores baseados em reação - para que eles simplesmente continuem com o que já estão fazendo e o DevOps lide com os bits mais difíceis?

DevOps, na minha opinião, significa que uma certa equipe que consiste em várias especialidades, por exemplo, test, dev, ops é responsável por um determinado aplicativo. Isso significa que toda a equipe deve concordar com uma certa abordagem e todos devem trabalhar e lidar com problemas de acordo com esse processo, em vez de DevOps handles the gritty bitsfalar sobre silos e "jogá-lo por cima do muro"

030
fonte