Como criar e publicar um pacote de extensões do VSCode

Um jeito ainda mais fácil de compartilhar seus plugins com os outros.

Introdução

Fala pessoal, o post de hoje vai ser bem simples, mas eu achei super legal de fazer. Tem uns 3 anos que migrei para o VS Code vindo do Sublime e posso dizer que cada dia estou mais feliz com ele.

É um editor super completo e funcional e cada dia eu descubro um plugin novo legal! Hoje eu uso quase sempre os mesmos plugins e gosto bastante, para sincronizar os plugins entre meus computadores, eu sempre usei o Settings Sync que cumpre muito bem o seu papel, mas ele gera um gist feinho, eu queria algo mais legal e é por isso que eu aprendi a criar um pacote de extensões e agora vou mostrar para vocês como é fácil!

Enquanto isso, vamos ouvindo uma banda de rock instrumental vindo diretamente da Irlanda do Norte, que se chama And so I watch you from afar.

De onde surgiu a ideia

Como a maioria de vocês deve saber eu finalmente lancei o módulo 1 do meu curso de React Avançado, e como é um curso bastante vivo e participativo, um aluno pediu as extensões que eu usava.

Petrus: @willianjustenqui Você se importaria em listar os plugins que você usa no VSCode para trabalhar com a stack usada no curso? Willian: Opa, eu tenho um gist, mas deixa eu atualizar. Eu na realidade uso bem pouca coisa...    Willian: https://gist.github.com/willianjusten/5d469f31516cda667dba94fa0948f1c3 Esse é o Gist mas verdade, é mó feio, deixa eu fazer uma lista bonitinha. Willian: Tive uma ideia melhor, vou fazer um pack instalável via Marketplace, daqui +ou- 2h eu lanço tá:  Petrus: Esse professor é outro nível! Muito obrigado!

E foi assim que eu tive essa ideia legal. Se você já quiser ver o pacote de extensões, o link está aqui, lá eu descrevo plugin a plugin.

Mas chega de papo furado, vamos ao que interessa.

Inicializando a estrutura do projeto

O VS Code tem na documentação explicando mais ou menos como fazer e eu segui basicamente os passos de lá, com umas pequenas diferenças.

Ele recomenda usar o Yeoman para iniciar a estrutura, então primeiro de tudo, você precisa instalar na sua máquina.

$ npm install -g yo generator-code

E então é só iniciar:

yo code

E você vai ver uma tela similar a esta:

Uma tela dizendo bem vindo ao gerador de extensões do vs code e perguntando qual tipo eu desejo criar.

E aí nós escolhemos a opção New Extension Pack. Depois ele pergunta se deseja importar as extensões que já possui no VS Code, eu escolhi como não, pois como uso algumas extensões do lado local e outras do lado do WSL, no meu caso o gerador fica confuso.

Vão ter mais algumas perguntas e no final ele vai ter criado tudo que é necessário para você.

Perguntas como qual o nome, identificador e descrição do pacote.

Configurando e instalando localmente

A primeira coisa a fazer, é editar o seu package.json na chave extensionPack para adicionar os plugins desejados. E como saber o nome dos plugins? É só ir na aba de plugins, pesquisar pelo plugin desejado e ao clicar nele, na parte superior, ele possui o identifier dele, segue um exemplo:

Imagem do plugin com seu identifier circulado em vermelho

No meu caso, depois de adicionar todas as extensões, ficou assim:

"extensionPack": [
    "editorconfig.editorconfig",
    "dbaeumer.vscode-eslint",
    "esbenp.prettier-vscode",
    "formulahendry.auto-rename-tag",
    "mrmlnc.vscode-duplicate",
    "patbenatar.advanced-new-file",
    "waderyan.gitblame",
    "ms-vsliveshare.vsliveshare",
    "apollographql.vscode-apollo",
    "jpoissonnier.vscode-styled-components",
    "xabikos.javascriptsnippets",
    "andys8.jest-snippets",
    "skyran.js-jsx-snippets",
    "pulkitgangwar.nextjs-snippets",
    "zhuangtongfa.material-theme",
    "ms-vscode.vscode-typescript-next",
    "VisualStudioExptTeam.vscodeintellicode"
  ]

Depois disso, nós precisamos editar alguns detalhes para aparecer na Marketplace, que seriam:

  "publisher": "willianjusten",
  "icon": "logo.png",
  "galleryBanner": {
    "color": "#030518",
    "theme": "dark"
  },
  "keywords": [
    "react",
    "typescript",
    "next",
    "styled-components",
    "graphql",
    "apollo"
  ],
  "repository": {
    "url": "https://github.com/React-Avancado/reactavancado-extension-pack"
  },
  "homepage": "https://github.com/React-Avancado/reactavancado-extension-pack",
  "bugs": {
    "url": "https://github.com/React-Avancado/reactavancado-extension-pack/issues"
  },

O publisher que é basicamente o seu identificador para o VS Code (nós vamos falar disso já já), o icon só para ficar bonitinho, o galleryBanner serve para na Marketplace o header ficar com a cor do seu plugin e bom, os outros são o que nome já diz, repositório, lugar para issues e palavras chave.

Gerando o pacote e instalando

Depois de adicionar todas essas coisas, nós precisamos instalar a dependência que vai empacotar a nossa extensão, que é o vsce. Para isso:

npm install -g vsce

Agora para gerar o pacote, basta digitar:

vsce package

E ele vai gerar um pacote da seguinte forma identifier-do-pacote-x.x.x.vsix, onde o x.x.x é a version definida lá no package.json.

Para testar localmente, basta que você aperte ctrl+shift+p (ou cmd+shift+p) e escolha a opção Install from VSIX:

Menu mostrando a opção Install from VSIX

Escolha o local onde seu pacote foi criado e mande instalar, ele vai demorar um pouquinho dependendo da quantidade de plugins que você tiver instalado e logo após, você poderá ver o seu pacote na lista de plugins instalados. Olha como fica bonitinho:

Interface do VS Code com o pacote de extensões instalado

Bem legal né? Agora vamos aprender a colocar na Marketplace!

Publicando o pacote na Marketplace

Já foi muito legal criar nosso pacote né, mas ainda mais legal é lançar isso online para que outras pessoas possam também instalar e usar!

Lembra que eu falei que iríamos conversar sobre o publisher, então chegou a hora. Primeiro de tudo, para poder publicar na Marketplace oficial, você precisa criar uma conta na Visual Studio Team Service. Logo após criar a conta, você precisa criar um Access Token que vai permitir você publicar.

Para isso, lá no seu profile, vá no canto superior direito e escolha a opção Security no menu. E aí na página, escolha a opção Personal Access Tokens e então crie seu token, com um identifier adequado e um tempo de expiração de acordo.

Logo após criar seu token, você pode conectar na sua máquina e publicar sua extensão, rodando o comando:

vsce publish -p <token>

Feito isso, só aguardar um tempo até que a Marketplace consiga fazer as checagens e pronto! Seu pacote já estará online!

Interface da Marketplace mostrando o pacote

E aí você pode instalar seja pelo botão de Install ali no site ou pesquisando dentro do próprio VS Code (esse pode demorar a indexar, então digite o identifier inteiro para achar).

Conclusão

Espero que tenham gostado do post e agora criem seus próprios e/ou outras extensões também. O processo vai ser muito similar ao que fizemos.

E, momento de jabá, se você se interessou pelo curso e quer um desconto na faixa, aproveite esse cupom, mas fica ligado, ele só vai até o final do mês! Então aproveite o preço mais barato possível agora!

Comentários