typescript - Por que executar a verificação do prettier retorna o erro "Não foi possível resolver o parser "babel-ts"" ao usar o parser babel-ts?
Quando eu executo o comando de verificação: `prettier --check '**/*.ts'` com uma configuração do prettier mostrada abaixo, recebo um erro indicando que o parser babel-ts não foi resolvido. Atualmente estou usando o prettier 2.3, que suporta esse parser, então estou um pouco confuso sobre o que eu poderia estar fazendo de errado.
printWidth: 100
singleQuote: true
trailingComma: all
tabWidth: 2
useTabs: false
overrides:
- files: "*.ts"
options:
parser: babel-ts
Tentei usar vários formatos de configuração (js, json, etc) e usar a configuração do parser na raiz, mas nenhum deles parecia afetar o comportamento estranho.
Minha configuração de pacote:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "tsc -p ."
},
"author": "",
"license": "ISC",
"dependencies": {
"@types/node": "^15.0.3"
},
"devDependencies": {
"prettier": "^2.3.0",
"typescript": "^4.2.4"
}
}
arquivo de teste index.ts
let a:number = 6
Erro Completo:
prettier --check '*.ts'
Checking formatting...
index.ts[error] Error: Couldn't resolve parser "babel-ts"
Observação: o Prettier está instalado apenas localmente e não globalmente
Resposta #1
Encontrei. Requerido do mesmo pacote npm e adicionado como um plugin 🎉
const prettier = require("prettier");
const tsParser = require("prettier/parser-typescript");
prettier.format(code, {
parser, // https://prettier.io/docs/en/options.html#parser
plugins: [tsParser],
});
Resposta #2
Bem, isso é frustrante. Então, para reiterar, a instalação foi local e não global, mas, ao rodar a partir do diretório do projeto, retornava um erro SOMENTE ao usar o parser babel-ts. Se eu escolhesse outro parser, funcionava bem. Isso poderia ser devido a alguma lógica estranha de caminhos dentro da biblioteca? Não sei.
NO ENTANTO, se eu executar este comando com o prefixo yarn, ou seja:
yarn prettier --check '*.ts'
FUNCIONA. Ainda acho bastante estranho que só não funcione com o parser babel-ts.
ATUALIZAÇÃO: Mesmo que não estivesse presente nos meus globais do npm/yarn, ele ainda estava presente no meu sistema Linux. Estou supondo que em algum momento usei um pacote do AUR que não foi atualizado para o prettier > 2.0. Não se esqueça de ficar atento a esses!
