- Published on
自己的命令行工具snowye-prettier
snowye-prettier
相信每个公司或者每个团队都有自己的代码格式规范,但是当你初始化一个项目的时候(vite、create react app、rsbuild)的初始代码并不是你的代码格式,这时候你需要去prettier匹配tsx,ts等文件去格式,所以snowye-prettier就出现了
注意点
prettier工具格式化是有优先级的
- t0 package.json里的prettier配置
- t1 .prettierrc文件
- 剩下就是 prettier.config.(js|ts|json)等等 所以我在格式化的时候也需要去注意这些 prettier官方也是有相关的api的
##代码
export const handlePrettier = async () => {
const filterFile = await input({ message: "选择过滤的文件夹 空格隔开" })
const srcDirectory = path.join(process.cwd())
const prettierFiles = getAllFilesInDirectory(srcDirectory, filterFile.split(" "))
const prettierConfigFile = await prettier.resolveConfigFile()
let Config: Options = {
semi: false,
tabWidth: 4,
arrowParens: "avoid",
printWidth: 800,
trailingComma: "none"
}
if (prettierConfigFile) {
Config = (await prettier.resolveConfig(prettierConfigFile)) as Options
}
createProgress({
name: process.cwd().split("\\").pop() ?? "snowye-prettier",
total: prettierFiles.length,
onProgress: async index => {
const file = prettierFiles[index]
const source = readFileSync(file, "utf-8")
const formatted = await prettier.format(source, {
...Config,
filepath: file
})
writeFileSync(file, formatted)
},
onError: index => {
console.log(" ❌ " + chalk.redBright(`Error: ${prettierFiles[index]} 文件格式化失败`))
}
})
}
- 首先获取目录中的所有js ts jsx tsx json html css等文件
- 再获取prettier的配置文件
- 再使用写的一个封装好的createProgress的高阶函数来格式化每一个匹配的文件
