"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Dominando Lerna: um guia para gerenciar JavaScript Monorepos

Dominando Lerna: um guia para gerenciar JavaScript Monorepos

Publicado em 01/11/2024
Navegar:944

Mastering Lerna: A Guide to Managing JavaScript Monorepos

Índice

  1. Introdução
  2. Capítulo 1: O que é Lerna?
    • Por que Monorepos?
  3. Capítulo 2: Instalando e configurando Lerna
    • Pré-requisitos
    • Guia de instalação passo a passo
    • Configurando seu primeiro projeto Lerna
  4. Capítulo 3: Gerenciamento de Dependências em Lerna
    • Dependências independentes
    • Elevando Dependências Compartilhadas
    • Pacotes de inicialização
  5. Capítulo 4: Executando scripts em pacotes
    • Executando scripts globalmente
    • Segmentando pacotes específicos
  6. Capítulo 5: Controle de versão e publicação com Lerna
    • Modo Fixo vs Modo Independente
    • Publicando pacotes para npm
  7. Capítulo 6: Usando Lerna com Yarn Workspaces
    • Ativando espaços de trabalho do Yarn em Lerna
    • Otimizando o fluxo de trabalho com espaços de trabalho Lerna Yarn
  8. Capítulo 7: Uso avançado de Lerna
    • Comandos de filtragem
    • Criando comandos personalizados
  9. Capítulo 8: Melhores práticas para Lerna Monorepos
    • Organização do Pacote Lógico
    • Automatizando testes e compilações
    • Integração CI/CD
  10. Conclusão
  11. Apêndice: Comandos comuns do Lerna

Introdução

Gerenciar projetos JavaScript ou TypeScript em grande escala envolvendo vários pacotes interdependentes pode ser um desafio significativo para desenvolvedores e equipes de desenvolvimento. Freqüentemente, os desenvolvedores dependem de vários repositórios para cada pacote, o que resulta em sobrecarga em termos de manutenção de código, gerenciamento de dependências e colaboração.

Lerna, uma poderosa ferramenta desenvolvida para gerenciar monorepos, agiliza esse processo. Monorepos permite que as equipes hospedem vários pacotes em um único repositório, simplificando o gerenciamento de dependências e tornando a colaboração entre equipes mais fácil.

Este e-book tem como objetivo fornecer um guia completo sobre como usar Lerna para gerenciar seus monorepos com eficiência. Esteja você lidando com uma biblioteca de componentes ou um projeto de grande escala com vários pacotes interconectados, você encontrará informações valiosas para ajudá-lo a maximizar sua produtividade com Lerna.


Capítulo 1: O que é Lerna?

Lerna é uma ferramenta de código aberto que facilita o gerenciamento de vários pacotes em um monorepo. Ele oferece recursos poderosos, como gerenciamento automático de dependências, controle de versão e publicação, facilitando a manutenção de projetos JavaScript e TypeScript em escala.

Por que Monorepos?

Monorepos são uma escolha arquitetônica para muitos projetos de grande escala, pois oferecem vários benefícios:

  • Base de código compartilhada: Com monorepos, a reutilização de código é mais fácil. Isso reduz a duplicação e garante consistência entre os projetos.
  • Colaboração simplificada: os desenvolvedores podem trabalhar juntos de forma mais eficaz quando todos os pacotes estão em um só lugar.
  • Processos de compilação unificados: A padronização da compilação, dos testes e da implantação em vários pacotes fica mais fácil.

Apesar desses benefícios, o gerenciamento de um monorepo pode trazer desafios únicos, principalmente no gerenciamento de dependências e controle de versão. Lerna foi projetado para enfrentar esses desafios de frente, fornecendo um fluxo de trabalho otimizado para monorepos.


Capítulo 2: Instalando e configurando Lerna

Pré-requisitos

Antes de começar, certifique-se de ter Node.js e npm (ou Yarn) instalados. Lerna é compatível com npm e Yarn.

Etapa 1: Instalando Lerna

Você pode instalar Lerna globalmente via npm:

npm install --global lerna

Alternativamente, você pode adicionar Lerna como uma dependência de desenvolvimento em seu projeto:

npm install --save-dev lerna

Etapa 2: inicializando um Lerna Monorepo

Depois de instalado, inicialize seu monorepo navegando até o diretório do projeto e executando:

lerna init

Isso criará os arquivos de configuração essenciais, incluindo lerna.json, e configurará uma pasta de pacotes onde seus pacotes individuais residirão.

Etapa 3: Adicionar pacotes

Em um projeto Lerna, cada pacote reside em sua própria subpasta em pacotes. Cada pacote deve ter seu próprio arquivo package.json para gerenciamento de dependências.

Estrutura de amostra:

/my-project
  /packages
    /package-a
    /package-b
  lerna.json
  package.json

Capítulo 3: Gerenciamento de Dependências em Lerna

Gerenciar dependências em vários pacotes é um dos principais pontos fortes de Lerna.

Dependências independentes

Lerna permite adicionar dependências a um pacote específico. Por exemplo, se apenas o pacote-a precisar de lodash, você pode executar:

lerna add lodash --scope=package-a

Elevando Dependências Compartilhadas

Quando vários pacotes compartilham dependências, você pode içar essas dependências para a raiz do seu monorepo. Isso reduz a redundância e acelera as instalações. Para ativar o içamento, adicione isto a lerna.json:

{
  "hoist": true
}

Bootstrapping

Para instalar dependências e vincular pacotes que dependem uns dos outros, execute:

lerna bootstrap

Isso garante que todas as dependências externas necessárias sejam instaladas e que os pacotes possam fazer referência uns aos outros corretamente.


Capítulo 4: Executando scripts em pacotes

Lerna facilita a execução de scripts (por exemplo, build, test, lint) em todos os pacotes em seu monorepo.

Executando scripts globalmente

Para executar um script como build em todos os pacotes, use:

lerna run build

Segmentando pacotes específicos

Se você deseja executar um script apenas em determinados pacotes, use o sinalizador --scope:

lerna run test --scope=package-a

Essa flexibilidade permite uma execução mais direcionada, economizando tempo durante o desenvolvimento.


Capítulo 5: Controle de versão e publicação com Lerna

Lerna fornece recursos robustos de versionamento e publicação, permitindo que você versione e libere pacotes facilmente.

1. Modo Fixo

No modo fixo, todos os pacotes compartilham o mesmo número de versão. Quando qualquer pacote é atualizado, o número da versão é incrementado para todos.

2. Modo Independente

No modo independente, cada pacote possui seu próprio número de versão. Quando um pacote é alterado, apenas a versão desse pacote é atualizada.

Para mudar para o modo independente, modifique lerna.json:

{
  "version": "independent"
}

Pacotes de publicação

Para publicar seus pacotes no npm, execute:

lerna publish

Lerna cuidará do versionamento e da publicação com base na sua configuração.


Capítulo 6: Usando Lerna com Yarn Workspaces

Combinar Lerna com Yarn Workspaces pode otimizar ainda mais o gerenciamento de dependências, elevando ainda mais dependências compartilhadas.

Para ativar o Yarn Workspaces, modifique seu arquivo lerna.json:

{
  "npmClient": "yarn",
  "useWorkspaces": true
}

Em seguida, atualize seu package.json:

{
  "workspaces": ["packages/*"]
}

Essa integração aumenta o desempenho e simplifica o gerenciamento de projetos de grande escala.


Capítulo 7: Uso avançado de Lerna

Comandos de filtragem

Lerna permite a filtragem para executar comandos para pacotes específicos ou para excluir determinados pacotes.

Exemplo de execução em pacotes específicos:

lerna run build --scope=package-a --scope=package-b

Exemplo para exclusão de pacotes:

lerna run build --ignore=package-c

Comandos personalizados

Você pode definir comandos Lerna personalizados em package.json para fluxos de trabalho especializados. Esses comandos podem então ser executados em seus pacotes.


Capítulo 8: Melhores práticas para Lerna Monorepos

  1. Organize pacotes logicamente: Agrupe pacotes relacionados para melhor reutilização de código.
  2. Use Hoisting: içar dependências compartilhadas economiza espaço e acelera o tempo de instalação.
  3. Automatizar testes: Use lerna run para automatizar testes em todo o seu monorepo.
  4. Pipelines de CI/CD: implemente fluxos de trabalho de integração e implantação contínuas para testar e implantar alterações automaticamente.
  5. Yarn Workspaces: Aproveite os Yarn Workspaces com Lerna para um melhor gerenciamento de dependências.

Conclusão

Lerna é uma ferramenta inestimável para gerenciamento de monorepos, oferecendo recursos que simplificam fluxos de trabalho complexos, desde gerenciamento de dependências até controle de versão e publicação. Ao adotar o Lerna, as equipes podem reduzir a complexidade, agilizar processos e melhorar a colaboração, facilitando a manutenção de projetos de grande escala.

Esteja você trabalhando em uma biblioteca de componentes simples ou em um ecossistema de vários pacotes, Lerna fornece as ferramentas necessárias para gerenciar seu projeto de forma eficaz. Continue experimentando os recursos avançados do Lerna para desbloquear todo o seu potencial.


Apêndice: Comandos comuns do Lerna

  • lerna init: inicializa um monorepo Lerna.
  • lerna bootstrap: Instala dependências e vincula pacotes.
  • lerna add [package] --scope=[package-name]: Adiciona uma dependência a um pacote específico.
  • lerna run [script]: Executa um script em todos os pacotes.
  • lernapublish: Publica pacotes no npm.

Boa codificação :)

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/samuel_kinuthia/mastering-lena-a-guide-to-managing-javascript-monorepos-4f2b?1 Se houver alguma infração, entre em contato com [email protected] para excluí-lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3