Sobre o projeto
pnpm é um gerenciador de pacotes projetado para velocidade e eficiência de espaço em disco. Ao contrário dos gerenciadores de pacotes tradicionais que duplicam dependências entre projetos, o pnpm armazena todos os arquivos em um único armazenamento endereçável por conteúdo no disco e os vincula aos node_modules do projeto usando hard-links ou reflinks. Essa abordagem garante que, se vários projetos usarem a mesma versão de um pacote, ele seja armazenado apenas uma vez.
As principais capacidades incluem:
- Armazenamento Eficiente: Apenas arquivos que diferem entre versões são adicionados ao armazenamento, economizando espaço significativo em disco.
- Rigor: Os pacotes só podem acessar dependências explicitamente especificadas em seu package.json.
- Determinismo: Utiliza um arquivo pnpm-lock.yaml para garantir instalações consistentes.
- Suporte a Monorepo: Recursos integrados otimizados para gerenciar workspaces.
- Gerenciamento de Runtime: Funciona como um gerenciador de versões do Node.js.
- Multiplataforma: Suporta Windows, Linux e macOS.
- Port Experimental em Rust: Inclui o 'pacquet', um port de CLI escrito em Rust.
Benchmarks de desempenho indicam que o pnpm pode ser até 2x mais rápido que alternativas como npm e Yarn classic.