7 pontos por xguru 2024-04-26 | 3 comentários | Compartilhar no WhatsApp

JSR - um novo registro para compartilhar pacotes JavaScript

  • Nos últimos anos, surgiram novos gerenciadores de pacotes como yarn e pnpm, melhorando a forma de baixar pacotes
  • No entanto, o registro de pacotes npm, peça central do ecossistema JavaScript, quase não evoluiu
    • A última atualização digna de nota foi a aba "files", adicionada há anos
  • De forma paradoxal, uma linguagem JavaScript conhecida por evoluir ativamente parece estar presa a um modelo de distribuição ultrapassado

Problemas do sistema de módulos do JavaScript

  • Quando o Node foi criado, não existia um sistema de módulos padrão para JavaScript, então o registro npm e o Node adotaram por padrão o sistema CommonJS(require), que tinha falhas fundamentais
    • Era um sistema que não funcionava no navegador
  • Quase 10 anos atrás, em 2015, a própria linguagem adotou a sintaxe de módulos ES(import)
  • Hoje, a maior parte do JavaScript é escrita usando módulos ES, mas o caminho para distribuir esses módulos ainda é complexo
    • Especialmente quando TypeScript está envolvido
  • Foi dessa lacuna evidente no ecossistema que nasceu o JSR
    • O JSR não é outro gerenciador de pacotes, mas sim um registro transformador projetado para inovar a forma como JavaScript e TypeScript são compartilhados entre runtimes do lado do servidor, navegadores e diversas ferramentas

Recursos e benefícios do JSR

  • O JSR melhora de forma fundamental o processo de distribuição de código ao simplificar complexidades que atormentam desenvolvedores há muito tempo
  • Sendo exclusivo para ESM e priorizando TypeScript, o JSR elimina os ajustes incômodos de configuração do package.json e das opções labirínticas do compilador no tsconfig
  • Com um sistema de pontuação de pacotes, o JSR incentiva boas práticas na distribuição de código
    • De forma semelhante ao pub.dev da comunidade Dart, ele dá pontuações mais altas a pacotes que incluem documentação JSDoc abrangente para cada símbolo exportado
  • Como visto em outros ecossistemas modernos de programação, como Go e Rust, o JSR oferece geração automática de documentação por padrão

Relação com o npm

  • O JSR é um registro, não outro cliente para o registro npm
    • Mas isso não significa que seja necessário abandonar tudo do npm ou migrar para um ecossistema separado de módulos JavaScript
  • O JSR foi projetado para complementar o registro npm, e não para substituir o npm
    • Pacotes JSR podem depender de pacotes npm (por exemplo: esta referência de pacote)
  • Além disso, pacotes JSR podem ser usados em softwares existentes centrados no npm
    • Isso porque o próprio JSR funciona como um registro npm que distribui tarballs compatíveis com npm (acessível em npm.jsr.io)
    • Com isso, é possível incluir pacotes JSR em qualquer software que use npm, yarn ou pnpm, e integrá-los a registros privados
  • Os tarballs npm distribuídos pelo JSR são otimizados

Foco em segurança

  • No Deno, a segurança é tratada como prioridade máxima no desenvolvimento JavaScript
  • Nenhum registro consegue monitorar de forma abrangente todo o código publicado, mas o JSR oferece transparência sobre os publicadores e protege o processo de publicação
  • Ao integrar GitHub Actions e tokens OIDC, o JSR gera provas avançadas e verificáveis de procedência usando SLSA para artefatos de software e as armazena no Sigstore
    • Isso não apenas garante a autenticidade do código, como também estabelece confiança e responsabilidade sobre o que os desenvolvedores implementam

Um polo para o desenvolvimento JavaScript

  • JavaScript é a linguagem comum de muitos programadores, universal e altamente acessível
  • Essa linguagem precisa de um hub central, uma praça pública onde desenvolvedores possam compartilhar seu trabalho sem complexidade desnecessária
  • Acreditamos que o JavaScript continuará sendo o centro do desenvolvimento de software por muitos anos, e o JSR busca apoiar essa relevância contínua
  • O JSR não é apenas mais uma ferramenta no ecossistema, mas representa uma mudança fundamental na forma como pensamos sobre a distribuição de JavaScript e TypeScript

3 comentários

 
yangeok 2024-04-30

Parece que dava para baixar o jsr pelo npm mesmo,, kkk

 
zzzz2222 2024-04-26

Que o PHP vá à falência.

 
semjei 2024-04-29

Por que falar de PHP em um texto sobre JS?? Como alguém que está trabalhando em um projeto em PHP, isso mexe comigo.