發(fā)布于:2021-01-16 13:38:04
0
101
0
Prettier可能一開始只是個實驗,但自動格式化的成功已經說服了很多人來嘗試一下。這個JavaScript格式化程序的1.0版本在這里,它帶來了禮物。
Prettier是在2017年初發(fā)布的,現在1.0已經發(fā)布了。根據宣布發(fā)布的博客文章,這個JavaScript格式化程序的靈感來自refmt,它對ES2017、JSX和Flow的語言特性提供了高級支持。簡而言之,它消除了所有原始樣式,并通過將JavaScript解析為AST并漂亮地打印AST來保證一致性。
Shift Reset LLC的James Long提供了一個例子:
// 60 chars --> | function makeComponent() : int { return { longCall() { complicatedFunction(importantArgument(), secondaryArgument()) weirdStyle({ prop: 1 }, 1, 2, 3); }, render() { const user = { name: "James" }; return <div> hello ${name}! JSX is <strong>supported</strong> </div> ; } }; }
/ 60 chars --> | function makeComponent(): int { return { longCall() { complicatedFunction( importantArgument(), secondaryArgument() ); weirdStyle({ prop: 1 }, 1, 2, 3); }, render() { const user = { name: "James" }; return ( <div> hello ${name}! JSX is <strong>supported</strong> </div> ); } }; }
從該示例可以看到,您可以在編輯器中鍵入任何內容,它將自動設置其格式。這里的最大行長是60。頂部的編輯器是原始源,底部的是格式化版本。
Prettier 1.0: 概述
pretty tier現在可以安全地用于生產。
這個工具是一個固執(zhí)己見的代碼格式化器;盡管團隊最初認為沒有像gofmt或refmt這樣的配置是可行的,但他們意識到“這將會損害對prettier的采用,而那些本可以從中受益的人也不會使用它,因為它沒有按照他們想要的方式打印代碼?!?/span>
因此,他們決定提供關于語法基本方面的選項,其本質是“如果它不能做X,無論它有多好,我都不會使用它”。
他們不會為每一種類型的語法都引入選項(只針對更有影響力的東西),但他們已經確定了兩個主要的選項屬于這一類別:制表符vs空格符和semi vs no-semi,所以他們決定把它們添加到更漂亮的語法中。
// Before if (1) { ··console.log(); // Two spaces } // After if (1) { ? console.log(); // One Tab! }
// Before console.log(); [1, 2, 3].map(x => x + 1); // After console.log() ;[1, 2, 3].map(x => x + 1)
事情的變化
根據宣布發(fā)布的博客文章,“來自AST的打印有利有弊的是,我們不得不重新打印程序中的所有括號。我們過去的立場是只打印程序有效所需的最小數量的括號,并以相同的方式執(zhí)行?!?/span>
現在,我們愿意添加一些并不嚴格需要的括號,但可以幫助人們理解代碼。
盡管在一些情況下,工具輸出的代碼是> 80列,但有可能不使用這種方法編寫代碼,您需要做的只是仔細尋找可能出錯的地方,并確保它不會對常見情況產生負面影響。
作者介紹