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 /react
diretório e são organizados em /react/featureName
subdiretó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.js
máximo possível, mas hackers diretamente webpack.config
també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)
- Quais abordagens existem para gerenciar vários
package.json
arquivos que vivem em cada diretório de recursos - Como identificamos pacotes comuns e os bloqueamos em um
/package.json
arquivo raiz . (Independentemente, todos os desenvolvedores já usamyarn
) - 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.
fonte
Respostas:
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.
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.
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 bits
falar sobre silos e "jogá-lo por cima do muro"fonte