發(fā)布于:2021-01-16 13:38:04
0
101
0
Prettier可能一開始只是個(gè)實(shí)驗(yàn),但自動(dòng)格式化的成功已經(jīng)說服了很多人來嘗試一下。這個(gè)JavaScript格式化程序的1.0版本在這里,它帶來了禮物。
Prettier是在2017年初發(fā)布的,現(xiàn)在1.0已經(jīng)發(fā)布了。根據(jù)宣布發(fā)布的博客文章,這個(gè)JavaScript格式化程序的靈感來自refmt,它對ES2017、JSX和Flow的語言特性提供了高級支持。簡而言之,它消除了所有原始樣式,并通過將JavaScript解析為AST并漂亮地打印AST來保證一致性。
Shift Reset LLC的James Long提供了一個(gè)例子:
// 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> ); } }; }
從該示例可以看到,您可以在編輯器中鍵入任何內(nèi)容,它將自動(dòng)設(shè)置其格式。這里的最大行長是60。頂部的編輯器是原始源,底部的是格式化版本。
Prettier 1.0: 概述
pretty tier現(xiàn)在可以安全地用于生產(chǎn)。
這個(gè)工具是一個(gè)固執(zhí)己見的代碼格式化器;盡管團(tuán)隊(duì)最初認(rèn)為沒有像gofmt或refmt這樣的配置是可行的,但他們意識(shí)到“這將會(huì)損害對prettier的采用,而那些本可以從中受益的人也不會(huì)使用它,因?yàn)樗鼪]有按照他們想要的方式打印代碼?!?/span>
因此,他們決定提供關(guān)于語法基本方面的選項(xiàng),其本質(zhì)是“如果它不能做X,無論它有多好,我都不會(huì)使用它”。
他們不會(huì)為每一種類型的語法都引入選項(xiàng)(只針對更有影響力的東西),但他們已經(jīng)確定了兩個(gè)主要的選項(xiàng)屬于這一類別:制表符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)
事情的變化
根據(jù)宣布發(fā)布的博客文章,“來自AST的打印有利有弊的是,我們不得不重新打印程序中的所有括號(hào)。我們過去的立場是只打印程序有效所需的最小數(shù)量的括號(hào),并以相同的方式執(zhí)行。”
現(xiàn)在,我們愿意添加一些并不嚴(yán)格需要的括號(hào),但可以幫助人們理解代碼。
盡管在一些情況下,工具輸出的代碼是> 80列,但有可能不使用這種方法編寫代碼,您需要做的只是仔細(xì)尋找可能出錯(cuò)的地方,并確保它不會(huì)對常見情況產(chǎn)生負(fù)面影響。
作者介紹