Contribuindo
O repositório é Hoyasumii/libretranslate, gerenciado com pnpm (Node.js 20 ou mais recente).
pnpm install # dependências, mais os git hooks (husky)
pnpm build # tsc → dist/ (CommonJS + .d.ts)
pnpm test:unit # jest, com um LibreTranslate falso em node:http (sem rede)
pnpm test:live # contra uma instância real (.env.test, a partir de env.example)
pnpm check:types # tsc --noEmit sobre src, tests e scripts
pnpm check:lint # oxlint (`pnpm fix:lint` corrige o que der)
pnpm check:format # oxfmt, 120 colunas (`pnpm fix:format` reescreve)
pnpm check:knip # arquivos, exports e dependências não usados
Todo script é multiplataforma: nada de rm, $VAR ou VAR=1 cmd. O .gitattributes mantém LF, com .cmd/.vbs
em CRLF.
As verificações rodam localmente por git hooks. pre-commit roda check:lint e check:format,
commit-msg roda o commitlint com a config convencional (feat: …, fix(mcp): …), e pre-push roda
check:types, check:knip e test:unit.
Todo push na main roda o workflow de Continuous Delivery (.github/workflows/cd.yml). Ele roda as mesmas
verificações e o build, e depois:
- publica a versão do
package.jsonno npm quando ela ainda não está no registro (por Trusted Publishing, com provenance), cria a tagv<versão>e abre uma release no GitHub; - constrói o site e faz o deploy na branch
gh-pagesquando o push toca emwebsite/ousrc/(uma execução manual do workflow sempre faz o deploy).
Para lançar uma versão, suba o version do package.json e faça o merge na main.
Código gerado
pnpm codegen # spec/openapi.yml → src/generated/ (orval) e src/mcp/generated/catalog.json
pnpm codegen:mcp # só o catálogo do MCP (um teste unitário falha quando está desatualizado)
spec/openapi.yml é a fonte única: uma descrição OpenAPI 3.1 da API do LibreTranslate escrita para este pacote a
partir da documentação pública da API e das respostas de uma instância rodando. O orval.config.ts gera as funções
fetch (passando por src/transport.ts), os tipos do modelo e os schemas zod. Nunca edite src/generated/ à mão:
mude a spec e rode pnpm codegen.
Para acompanhar uma mudança na API: atualize a spec, rode pnpm codegen, ajuste src/client.ts e as tools se um
método mudar, e confira contra uma instância real com pnpm test:live.
Este pacote é MIT e continua independente: descreve a API pela documentação e pelo comportamento observável, e nunca copia código do projeto LibreTranslate nem do servidor MCP dele (ambos AGPL-3.0).
Este site
O site é um pacote de workspace Docusaurus em website/, em inglês e português (Brasil).
pnpm docs:dev # pré-visualização (acrescente `--locale pt-BR` para a tradução)
pnpm docs:build # constrói todos os idiomas em website/build/
pnpm docs:serve # serve o build (a busca só funciona num build)
GIT_USER=<usuário> pnpm docs:deploy # constrói e envia para a branch gh-pages
- Os guias são Markdown puro em
website/docs/, espelhados página a página emwebsite/i18n/pt-BR/docusaurus-plugin-content-docs/current/: mude os dois juntos. - A referência da API é gerada de
src/index.tsesrc/mcp/index.tspelo TypeDoc a cada build em inglês. llms.txtellms-full.txtsão gerados na raiz do site a partir dos guias em inglês a cada build.