Skip to main content
Join the Agentforce Hackathon on Nov. 18-19 to compete for a $20,000 Grand Prize. Sign up now. Terms apply.

Criar seu primeiro pacote desbloqueado

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Conhecer os comandos CLI para o empacotamento.
  • Descrever os casos de uso básicos do empacotamento.
  • Empacotar o exemplo de aplicativo DreamHouse LWC e instalá-lo em um Trailhead Playground.
Nota

Nota

Deseja aprender em português (Brasil)? Comece o desafio em um Trailhead Playground de português (Brasil) e use as traduções fornecidas entre parênteses para navegar. Copie e cole somente os valores em inglês porque as validações dos desafios dependem de dados em inglês. Se você não passar no desafio em sua organização de português (Brasil), recomendamos que (1) mude o local para os Estados Unidos, (2) mude o idioma para inglês, seguindo as instruções aqui, e (3) clique novamente no botão “Validar o desafio”.

Consulte o emblema Trailhead no seu idioma para saber mais sobre como aproveitar a experiência de Trailhead em outros idiomas.

Por que adoramos o desenvolvimento com pacotes

Para nós, o empacotamento é um dos recursos para desenvolvedores da Salesforce Platform mais empolgantes. Fica lado a lado com outras revoluções famosas, como o pão fatiado, o celular e os serviços de streaming de vídeo. No entanto, caso você ainda não esteja convencido, vamos resumir as principais vantagens que descobrimos até hoje. O desenvolvimento com pacotes:

  • Segue as melhores práticas referentes ao ciclo de vida do desenvolvimento de software. É compatível com os recursos do Salesforce DX: os projetos, os comandos CLI e as organizações temporárias foram criados pensando especificamente no empacotamento.
  • Encapsula todas as alterações controladas entre os estágios do ciclo de vida em um artefato com versões.
  • Torna mais fácil acomodar os futuros pedidos de novos recursos. Adiciona, atualiza e remove componentes de seu pacote de modo simples.
  • Proporciona um histórico de auditoria melhorado, facilitando o controle e a compreensão das alterações feitas em sua organização de produção.
  • Organiza a origem. Fica muito mais fácil saber qual componente pertence a cada aplicativo e recurso.
  • Promove o desenvolvimento iterativo e modular.
  • Aceita interdependências entre pacotes desbloqueados. Um único pacote desbloqueado pode depender de vários outros pacotes desbloqueados, e de pacotes gerenciados de primeira e segunda geração.
  • Aceita a integração contínua e o envio contínuo porque os comandos de CLI para empacotamento permitem automatizar totalmente cada etapa no pipeline de implantação.

Casos de uso simples do empacotamento

Os pacotes desbloqueados são perfeitos para aplicativos empresariais internos. Por exemplo:

  • O grupo de negócios financeiros quer que a equipe de TI crie um aplicativo para os funcionários enviarem suas despesas. Sua equipe decide desenvolver e enviar esse aplicativo usando os pacotes desbloqueados.
  • A equipe de RH quer que a equipe de TI crie um aplicativo para os funcionários indicarem possíveis candidatos. Os funcionários usarão o aplicativo Recomendação para publicar vagas de emprego, indicar colegas e receber bônus por indicação. Sua equipe decide desenvolver e enviar esse aplicativo usando os pacotes desbloqueados.

Em cada um desses casos, você começa um projeto completamente novo e toda a origem fica contida no formato de origem de projeto do Salesforce DX (e comprometida com seu sistema de controle de versão). Quando estiver pronto para enviar um desses aplicativos, você cria um pacote desbloqueado que pode ser testado em uma organização temporária ou um sandbox e, depois, instalado em sua organização de produção. E quando a equipe precisa de um recurso novo, é possível adicioná-lo e criar uma nova versão do pacote. Simples. Moleza!

Agora que você já está a par das vantagens do desenvolvimento com pacotes, vamos mostrar como criar um pacote desbloqueado.

Configure o ambiente

Antes de irmos ao que interessa, vamos configurar um novo Trailhead Playground e habilitar o Dev Hub e o empacotamento nele. 

Nota

Nota: Se você estiver acompanhando as etapas desta seção, precisará criar outro novo Trailhead Playground quando iniciar o desafio prático.

  1. Para criar um novo Trailhead Playground, encontre o desafio prático no final desta unidade. Clique nas informações do Playground à esquerda do botão Launch (Iniciar).
    Em seguida, selecione Create Playground (Criar Playground).

    Nota: Mesmo que seja possível reutilizar um Trailhead Playground existente, começar com um playground novo é uma garantia de que você está trabalhando com um ambiente limpo.
  2. Depois de criar um novo Trailhead Playground, clique em Launch (Iniciar) para abrir o playground. Em seguida, certifique-se de saber o nome de usuário e a senha do playground. Essas informações serão necessárias nas próximas etapas.
    Consulte Obter seu nome de usuário e redefinir sua senha.
  3. Em Configuração no Trailhead Playground, digite Dev Hub na caixa Busca rápida e selecione Dev Hub. Clique em Ativar Dev Hub e, em seguida, clique em Ativar pacotes desbloqueados e pacotes de segunda geração gerenciados.
  4. Crie uma conta GitHub, se ainda não tiver uma.
  5. Instale o Salesforce CLI no seu computador.

Copie o código fonte do DreamHouse

Para fins de demonstração, vamos fingir que você está criando e apresentando o aplicativo DreamHouse LWC para uma das equipes da sua empresa.

Se você usa atualmente os recursos e ferramentas do Salesforce DX, talvez já esteja à vontade com o exemplo de repositório DreamHouse LWC. O DreamHouse LWC é um aplicativo independente que incorpora muitos dos recursos disponíveis na Salesforce Platform. Ele usa componentes Web do Lightning, Apex e muito mais. Nele, os usuários podem procurar imóveis e falar com corretores on-line.

Para que você possa se concentrar no empacotamento, vamos extrair o código fonte do DreamHouse LWC e os respectivos arquivos de projeto do Salesforce DX, que já foram criados. Embora este exemplo use apenas um pacote, um projeto do Salesforce DX pode conter vários. Você pode isolar pacotes diferentes com base na estrutura de diretório e compartilhar componentes quando for o caso.

Criando um pacote para esse aplicativo, fica fácil instalá-lo em organizações temporárias, UAT, sandboxes e organizações de produção conforme você itera pelo ciclo de vida do desenvolvimento.

Vamos acompanhá-lo durante todo o processo usando as ferramentas especialmente criadas para o desenvolvimento com pacotes.

Vamos copiar o código fonte do aplicativo DreamHouse Lightning Web Components (LWC).

Em uma janela de comando, mude para o diretório onde você quer colocar o código-fonte. Depois, execute o comando.

git clone https://github.com/dreamhouseapp/dreamhouse-lwc.git

O comando git clone cria a pasta dreamhouse-lwc usando a estrutura do projeto do Salesforce DX, que contém um arquivo de projeto do DX e um arquivo de definição de organização temporária. Não se assuste se a sua versão do projeto for um pouco diferente, pois o repositório DreamHouse LWC é atualizado com frequência.

Mostra a estrutura completa do diretório dreamhouse-sfdx quando ele é aberto em um programa como o Finder ou o Windows Explorer.

Configurar seu pacote

  1. Seu Trailhead Playground também é sua organização Dev Hub. Para criar um pacote, precisamos primeiro autorizar a sua organização Dev Hub e fazer login nela.
    sf org login web --set-default-dev-hub --alias DevHub
  2. Na janela de comando, vamos verificar se a organização Dev Hub está conectada.
    sf org listA saída desse comando apresenta todas as organizações às quais você está conectado, incluindo organizações Dev Hub, Trailhead Playground e temporárias. O (D) indica sua organização Dev Hub padrão. 
    === Orgs
         ALIAS       USERNAME                             ORG ID              CONNECTED STATUS
    ───  ──────────  ───────────────────────────────      ──────────────────  ────────────────
    (D)  DevHub      myDevHub@example.com                 00DB0000000Ige5MAC  Connected
         MyTP        myName@mindful-raccoon-8184t4.com    00D6A000000fH8CUAU  Connected
         TestingOrg  name@example.com                     00D4x000006sFonEAE  Connected
    ALIAS            USERNAME                             ORG ID              EXPIRATION  DATE
    ────────         ───────────────────                  ──────────────────  ────────────────
    Scratch1         test@example.com                     00DZ000000N8ItoMAF  2021-02-24
  3. Mude para o diretório dreamhouse-lwc em seu computador.
  4. Abra o sfdx-project.json em seu editor de texto favorito e anote o número da sourceApiVersion.
  5. DreamHouse LWC é um projeto de código aberto com vários contribuidores. Para você poder completar o desafio com sucesso, substitua o conteúdo do seu arquivo sfdx-project.json pelo código a seguir.
    {
       "packageDirectories": [
          {
             "path": "force-app",
             "default": true
          }
       ],
       "namespace": "",
       "sfdcLoginUrl": "https://login.salesforce.com",
       "sourceApiVersion": "61.0"
    }
  6. Certifique-se de que o número da sourceApiVersion no trecho de código corresponde ao número da versão que você anotou do arquivo original. Se não, então atualize o número da sourceApiVersion.

Por que não usamos namespace neste exemplo?

Embora o namespace seja opcional nos pacotes desbloqueados, incluí-lo ajuda a manter os componentes do pacote organizados. No entanto, como os namespaces exigem mais configuração e antecipação, vamos deixá-los de lado nesta unidade.

Nota

Caso esteja migrando metadados da sua sopa da felicidade para o pacote desbloqueado, crie os pacotes desbloqueados sem namespace. Assim, quando os metadados saírem do estado sem pacote para entrar no pacote desbloqueado, o nome da API dos elementos de metadados permanecerá o mesmo.

Criar o pacote

Quando você clonou o aplicativo DreamHouse LWC do GitHub, colocou todos os arquivos de dados no diretório do seu projeto. Agora você pode criar o pacote de base sem mais delongas.

Esta seção apresenta o fluxo de trabalho para criar um pacote usando o exemplo de repositório DreamHouse LWC.

  1. Num terminal ou prompt de comando, mude para o diretório dreamhouse-lwc.
  2. Crie o pacote desbloqueado sem namespace e informe o alias ou nome de usuário de sua organização Dev Hub caso ele não esteja definido como o padrão:
    sf package create --name dreamhouse --description "My Package" --package-type Unlocked --path force-app --no-namespace --target-dev-hub DevHub
    • --name é o nome do pacote. Esse nome é um alias que você pode usar ao executar comandos para empacotamento subsequentes.
    • --path é o diretório que apresenta o conteúdo do pacote.
    • --packagetype indica que tipo de pacote você está criando; neste caso, desbloqueado.
  1. Abra sfdx-project.json. Bingo! Em packageDirectories, você pode ver o nome do pacote que definiu, com espaços reservados para o nome e o número da versão. O comando também cria uma seção packageAliases, que mapeia o nome do pacote (alias) para seu ID de pacote (0Ho) correspondente.
    {
       "packageDirectories": [
          {
             "path": "force-app",
             "default": true,
             "package": "dreamhouse",
             "versionName": "ver 0.1",
             "versionNumber": "0.1.0.NEXT"
          }
       ],
       "namespace": "",
       "sfdcLoginUrl": "https://login.salesforce.com",
       "sourceApiVersion": "61.0",
       "packageAliases": {
          "dreamhouse": "0Hoxxx"
       }
    }
Nota

Se você não lembrar do alias do pacote ou do ID de pacote, liste todos os pacotes associados ao seu Dev Hub executando sf package list.

Criar uma organização temporária para testar sua versão do pacote

Vamos criar uma organização temporária na qual instalaremos o pacote desbloqueado com o alias MyScratchOrg. O teste em uma organização temporária é uma forma prática de realizar a fase de teste da unidade no ciclo de vida do desenvolvimento por empacotamento.

sf org create scratch --definition-file config/project-scratch-def.json --duration-days 30 --alias MyScratchOrg --target-dev-hub DevHub

Esse comando usa o arquivo de definição da organização temporária padrão e cria uma organização temporária da Developer Edition da mesma edição de seu Trailhead Playground. Repare que a duração é definida como 30 dias, dando muito tempo para que você termine o trabalho dentro de um sprint de desenvolvimento (ou conclua este módulo do Trailhead).

Criar a versão do pacote e instalá-la na organização temporária

Quando estiver pronto para liberar o pacote, crie um instantâneo dele, chamado de “versão do pacote”. A instalação da versão do pacote se assemelha à implantação de metadados. Lembre-se: depois de criada, a versão do pacote serve como artefato imutável que contém um conjunto específico de metadados.

  1. Abra sfdx-project.json com o editor de texto desejado para atualizar as opções da versão do pacote.
  2. Altere versionName para Versão 1.0 e versionNumber para 1.0.0.NEXT. O diretório force-app é o padrão (e o único) para os pacotes, então, qualquer origem nele contida se torna parte do pacote. Depois de atualizado, o arquivo sfdx-project.json fica assim:
    {
       "packageDirectories": [
          {
             "path": "force-app",
             "default": true,
             "package": "dreamhouse",
             "versionName": "Version 1.0",
             "versionNumber": "1.0.0.NEXT"
          }
       ],
       "namespace": "",
       "sfdcLoginUrl": "https://login.salesforce.com",
       "sourceApiVersion": "61.0",
       "packageAliases": {
          "dreamhouse": "0Hoxxx"
       }
    }
  3. Salve o arquivo sfdx-project.json.
  4. No diretório dreamhouse-lwc, crie a versão do pacote, que associa os metadados ao pacote.
    O código do Apex em pacotes desbloqueados deve atender a um requisito mínimo de 75% de cobertura do código, antes que o pacote possa ser instalado em uma organização de produção. Nós não calculamos a cobertura de código neste exemplo, porque sabemos que o repositório de exemplo Dreamhouse LWC não tem testes do Apex suficientes.
    sf package version create --package dreamhouse --installation-key test1234 --wait 10 --target-dev-hub DevHub
    • -p é o alias do pacote que mapeia para o ID de pacote.
    • -d é o diretório que apresenta o conteúdo do pacote.
    • -k é a chave de instalação que impede que seu pacote seja instalado por pessoas não autorizadas.
  1. É comum que o processo para criar a versão do pacote leve alguns minutos. As mensagens de status que você vê informam o que está acontecendo. Quando a criação da versão do pacote for concluída, você verá esta mensagem.
    Successfully created the package version [08cxxx]. Subscriber Package Version Id: 04txxx.
    Package Installation URL: https://login.salesforce.com/packaging/installPackage.apexp?p0=04txxx
    As an alternative, you can use the "sf package install" command.
  2. Observe que a seção packageAliases em sfdx-project.json tem uma nova entrada.
    "packageAliases": {
       "dreamhouse": "0Hoxxx",
       "dreamhouse@1.0.0-1": "04txxx"
    }
  3. Use o alias da versão do pacote para instalar a versão do pacote na organização temporária que você criou.
    sf package install --wait 10 --publish-wait 10 --package dreamhouse@1.0.0-1 --installation-key test1234 --no-prompt --target-org MyScratchOrg 
    Pode demorar vários minutos para que a versão do pacote recém-criada fique disponível na organização temporária. A instalação começará assim que a versão do pacote estiver disponível. Quando a instalação do pacote for concluída, você verá esta mensagem. Successfully installed package [04t3XXX] (Pacote instalado com sucesso [04t3XXX])
  4. Depois que o pacote estiver instalado, abra a organização temporária para visualizá-lo.
    sf org open --target-org MyScratchOrg
  5. Em Configuração, digite Pacotes instalados na caixa Busca rápida e selecione Pacotes instaladosMostra o diálogo Pacotes instalados comComo se trata de um pacote desbloqueado, você pode fazer alterações diretamente na organização temporária, extrair os metadados atualizados e, depois, criar a nova versão do pacote. Por enquanto, o aplicativo DreamHouse LWC já tem tudo o que é necessário, ou seja, podemos prosseguir e liberar o pacote.

Liberar a versão do pacote

Ainda não discutimos um recurso, o status do pacote. Quando os pacotes são criados, eles têm o status beta. Não é possível instalar pacotes beta em uma organização de produção. Trata-se de uma proteção para garantir que a versão do pacote lançada esteja pronta para a produção. Quando você souber que a versão está pronta para ganhar o mundo, basta promover o lançamento.

O exemplo de repositório Dreamhouse LWC que estamos usando nesta unidade evolui e pode nem sempre ter testes do Apex suficientes para atender ao requisito de 75% de  cobertura de código. Portanto, vamos pular a promoção e continuar usando a versão beta do pacote que você criou.

É assim que fica o comando de promoção de versão do pacote, mas se você tentar esse comando agora, receberá uma mensagem de erro.

sf package version promote --package dreamhouse@1.0.0-1 --target-dev-hub DevHub

Instalar a versão do pacote na organização

Por último, mas não menos importante, instale a versão do pacote na organização. Lembre-se: é possível instalar versões do pacote em organizações temporárias, sandboxes e Trailhead Playgrounds (organizações DE). Você pode instalar uma versão do pacote liberada em qualquer organização. Normalmente, neste estágio, você instalará a versão do pacote em uma sandbox, mas, para este exercício, iremos instalar o pacote no seu Trailhead Playground.

  1. Para instalar a versão do pacote em seu Trailhead Playground, você deve primeiro adicioná-lo à sua lista de organizações autorizadas.
    primeiro, você deve adicioná-lo à sua lista de organizações autorizadas.
    sf org login web --alias MyTP
    Sugerimos criar um alias para o Trailhead Playground, MyTP neste exemplo. Depois que você faz login na organização, o CLI se lembra das suas credenciais. Você só precisa se lembrar do alias da organização ao enviar os comandos seguintes. Caso não saiba o nome de usuário e a senha do Trailhead Playground, consulte Obter seu nome de usuário e redefinir sua senha.
  2. Instale a versão do pacote no Trailhead Playground.
    sf package install --wait 10 --publish-wait 10 --package dreamhouse@1.0.0-1 --installation-key test1234 --no-prompt --target-org MyTP
  3. Abra o Trailhead Playground.
    sf org open --target-org MyTP
  4. No Trailhead Playground, em Configuração, digite Pacotes instalados na caixa Busca rápida e selecione Pacotes instalados. Você também receberá um email que confirma a instalação bem-sucedida do pacote desbloqueado.
  5. Clique em dreamhouse e em Exibir componentesClicando em Exibir componentes de dreamhouse, você vê uma lista com todos os componentes do pacote.
  6. No Iniciador de aplicativos, encontre e selecione o aplicativo DreamHouse e confira alguns de seus recursos.

Recursos

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback