4.7 KiB
Acabar com o warning do pnpm sobre pnpm.onlyBuiltDependencies ignorado
Status: registrado Atualizado em: 2026-08-17 Issue: #12 Priority: P2 Model: composer-2.5 Impeccable: A — N/A (sem UI) Rascunho UI: N/A — sem UI Appetite: ~2–4 h eng; um outcome verificável Responsável: —
Intenção
Todo comando pnpm no terminal imprime, antes de executar:
[WARN] The "pnpm" field in package.json is no longer read by pnpm.
The following keys were ignored: "pnpm.onlyBuiltDependencies".
See https://pnpm.io/settings for the new home of each setting.
Desde o pnpm 10, o campo pnpm do package.json não é mais lido — os
settings migraram para pnpm-workspace.yaml (ou .npmrc). Além do ruído em
toda sessão de terminal (dev, CI, builds do Docker), o warning diz que a
allowlist onlyBuiltDependencies (sharp, esbuild, unrs-resolver) está
sendo ignorada hoje: a intenção original de permitir os build scripts
desses pacotes não chega ao pnpm. Queremos o warning sumindo e a allowlist
voltando a valer, no lugar canônico que o próprio pnpm aponta.
Persona e fluxo
- Persona / contexto: dev e agentes (pool, worktrees) — todo comando pnpm, incluindo CI e build da imagem do homeserver (OPS53).
- Job principal: rodar qualquer comando pnpm sem a linha de warning, com a config de build scripts honrada.
- Fluxo desejado:
pnpm install/pnpm dev/ CI /docker build→ sem[WARN];pnpm config get onlyBuiltDependenciesretorna os 3 pacotes;sharp/esbuild/unrs-resolvercontinuam com seus builds permitidos. - Anti-goals de produto: reconfigurar pnpm além do que o warning cita; mudar versão/packageManager; mexer em
.npmrc(legacy-peer-deps,include) ou na política de approve de build scripts de outros pacotes.
Objetivo e aceite
- Nenhum comando pnpm (install/dev/scripts, CI Forgejo, estágio
depsdo Dockerfile) imprime mais o warning do campopnpmem package.json. pnpm config get onlyBuiltDependenciesretornasharp,esbuild,unrs-resolver(a allowlist passa a ser honrada — ela não é hoje).- Build e suíte completa verdes (mesmos passos do checklist local do
AGENTS.md), incluindopnpm install --frozen-lockfilesem tocar o grafo de dependências. - Imagem Docker continua construindo o app (estágio
depscopia o novo arquivo de config). - Guardrail:
.npmrc,packageManagere o restante dopackage.jsonficam intocados.
Dados (intenção)
Dados: N/A — configuração de ferramenta; nenhuma métrica/UI envolvida.
Direção no codebase (hipótese)
- Áreas prováveis: raiz do repo —
package.json(remover o campopnpm), novopnpm-workspace.yaml(raiz, comonlyBuiltDependencies),Dockerfile(estágiodepscopiapnpm-workspace.yamlpara a imagem). - Precedente a olhar: pnpm docs (https://pnpm.io/settings — novo home dos settings); planos OPS50/51/53 (que tocaram CI/Dockerfile recentemente).
- Risco de acoplamento:
Dockerfileé compartilhado com OPS53 (deploy homeserver, aindablocked) — se os dois executarem próximos, coordenar o estágiodeps. Verificado: nenhum script/skill lê o campopnpmdo package.json além do próprio pnpm; nada referenciapnpm-workspace.yamlhoje;pnpm install --frozen-lockfiledeve seguir passando (grafo inalterado).
Dependências
- Nenhuma. (OPS53 só se sobrepõe no arquivo Dockerfile se executar em paralelo.)
Fora de escopo
- Mover outros settings (
legacy-peer-deps,include) do.npmrcparapnpm-workspace.yaml— sem item, só se um warning futuro pedir. - Atualizar pnpm /
packageManager— fora de escopo. - Renomear ou re-approvar build scripts de outros pacotes — fora de escopo.
Rabbit holes de produto
- Migração ampla de config. Se alguém "só completar", move tudo que existe para o YAML novo e muda comportamento não reclamado. Corte neste item: apenas
onlyBuiltDependencies, que é exatamente o que o warning cita. - Mudar a política de build scripts. A tentação de trocar a allowlist por
dangerouslyAllowAllBuildsetc. Corte: manter a allowlist como está, só realocada.
Questões em aberto (produto)
- Onde hospedar a config? Opções: (A)
pnpm-workspace.yaml— novo home canônico, é o destino que o próprio warning aponta; (B).npmrc— ainda suportado, mas caminho legado para esse tipo de setting. Recomendação: A. (assumido — validar com produto) - ID OPS54 ok? Último OPS usado é o 53 (registrado 2026-08-17). Recomendação: sim, próximo da trilha. (assumido — validar)
Referências
- pnpm settings: https://pnpm.io/settings
package.json(campopnpmnas linhas 187–193),Dockerfile(estágiodeps),.npmrcdocs/plans/ops53-ci-deploy-homeserver.md(compartilha o Dockerfile)