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
Parece que dava para baixar o jsr pelo npm mesmo,, kkk
Que o PHP vá à falência.
Por que falar de PHP em um texto sobre JS?? Como alguém que está trabalhando em um projeto em PHP, isso mexe comigo.