O $mol funciona em qualquer editor, mas um pequeno conjunto de ferramentas torna o .view.tree e os estilos tipados bem mais confortáveis: um gerador de projeto, um language server, integrações para os editores Zed e VS Code e uma skill que ensina o framework a assistentes de LLM.
O create-view-tree-lsp gera um módulo $mol pronto para rodar, para você não montar o boilerplate à mão:1npxcreate-view-tree-lspbog/myappRode a partir da raiz da sua cópia do MAM: os caminhos de módulo são resolvidos dali, e é lá que o projeto tem de morar. Fora de um workspace o comando avisa, em vez de deixar você descobrir no primeiro build.O argumento é o caminho do módulo (namespace/name, ou o equivalente bog_myapp). Ele escreve view.tree, view.ts, view.css.ts e index.html de uma app funcional, além das GitHub Actions para fazer o deploy.Tudo o que o gerador sabe adicionar vem incluído por padrão. Você nomeia apenas o que não quer:1npxcreate-view-tree-lspbog/myapp--no-tauri--no-backend--no-baza — um armazenamento local-first Giper Baza--no-docker — uma configuração Docker com docker-compose.yml e config do nginx--no-tauri — uma casca desktop Tauri--no-backend — um backend REST $mol_server com armazenamento node:sqlite e um tipo de item TypeScript compartilhado--no-prerender, --no-seo — visibilidade para mecanismos de busca, descrita abaixo em Integração contínuaUma flag desconhecida interrompe a execução, para que um erro de digitação não deixe algo lá calado.O gerador é um wrapper fino sobre a CLI do language server, então npxview-tree-lspcreatebog/myapp faz o mesmo diretamente.
As traduções ficam ao lado do seu módulo, em <módulo>/<nome>.locale=<lang>.json. Para o código isso é conveniente; para o tradutor, nem tanto: em vez de uma lista de frases, ele recebe trinta arquivos pequenos.$yuf_localizer resolve essa distância. Aponte-o para as URLs dos seus projetos e os códigos de idioma, e ele mostra todas as chaves em uma única lista pesquisável, marcando o que ainda falta: chaves que só existem em inglês, chaves alteradas mas não salvas, e chaves obsoletas que o projeto já não tem. As traduções ficam no navegador até você exportá-las, então nada se perde entre sessões.Quando o tradutor terminar, exporte o resultado e distribua-o de volta pelos módulos:1# a partir da raiz do MAM2npxview-tree-lsplocalebog/myapp/app/---exclude=mol--updateO argumento é uma pasta ou um único arquivo de locale. Opções:Cada chave carrega o caminho do próprio módulo, então $my_page_greeting vai parar em my/page/page.locale=ru.json, ao lado dos fontes a que pertence. Descobrir qual é esse módulo, porém, é mais sutil do que parece: _ separa tanto pastas quanto palavras, então o caminho correspondente mais longo é a resposta errada. Em $my_page_lang_hint a propriedade começa com lang, e um submódulo real my/page/lang ao lado engoliria a chave. Por isso o comando pergunta a cada módulo candidato quais chaves ele declara — o MAM escreve exatamente essas no seu arquivo de locale em -view.tree — e entrega a chave a quem é dono dela.