餘騰靖,20年畢業應屆生,在找前端崗位工作,如果大家覺得文章不錯,可以到知乎上去撩這位童鞋,https://www.zhihu.com/people/yu-teng-jing。
這篇文章可能會得罪一部分 VSCode 擴展的作者,但是我實在是看不慣網上很多的文章還在推薦一些已經過時的擴展,我覺得作為 VSCode 的老粉,我有必要寫一篇文章科普一下。
在 VSCode 擴展市場目前其實存在著不少下載量特別高但是不應該再被使用的擴展,顯然官方是不可能直接給你標出來哪些擴展已經被廢棄了,哪些有嚴重 bug,純靠擴展作者自覺。很多人新人由於沒有深入去了解過,看了一些文章的介紹或者看了擴展市場的簡介覺得有用就安裝了,其實 VSCode 擴展安裝多了會導致不少問題的:
啟動慢,很多擴展是啟動 VSCode 的時候就開始加載的,所以不一定是 VSCode 自身變慢了,可能是你擴展裝多了。你可以通過在 VSCode 的命令面板調用命令 Developer: Startup Performance 查看各個擴展的在 VSCode 啟動時的加載時間。擴展之間衝突,比如安裝了多個會修改代碼顏色的擴展,TODO highlight 和 Todo Tree 之間功能重複,例如:IntelliSense for CSS class names in HTML 和 HTML CSS SupportCPU 佔用過高,很多被棄坑的 VSCode 擴展你去看它們 github issues 頁面都可以看到一堆 issues 抱怨這個問題,例如 import-cost本文將主要從兩個角度介紹一些不推薦使用的 VSCode 擴展:
本文只是給出一些你應該考慮卸載的理由,不是勸說你就應該卸載它們。有些擴展雖然有些問題,但是還是有部分功能沒有被內置或者暫時沒有更好的替代品,但是我覺得這些事情你應該要清楚。由於本人目前主要是用 VSCode 做前端開發,所以文章中涉及到的擴展大多是和前端相關的。
功能已經被 VSCode 內置文中列出的數據為文章最後更新時的數據,不保證具有時效性,Last updated 為該擴展最後一次發布到 VSCode 擴展市場的時間。
Path IntellisenseLast updated: 2017/5/11Issues open/close: 73/63Download: 2.7M
我經常看到一些使用 VSCode 沒幾天的人噴沒有路徑補全,我覺得很莫名其妙。可以看到這個擴展已經快 3 年沒維護了,這也是一個應該放棄使用它的理由。其實如果一個工具本身功能完善,沒什麼 bug,沒有依賴別的項目的話,長期不更新倒沒什麼。但實際上很多項目都會依賴別的項目,尤其是使用 JS 開發的 VSCode 擴展,經常可以看到各種 npm 包報安全漏洞,最近一次影響比較大的應該是 acorn。
其實 VSCode 自身已經支持在 import/require 也就是導入語句中使用路徑補全,但是在其它場景中寫路徑字符串時還是沒有提示。如果你覺得在導入語句中有路徑補全已經能夠滿足你的使用需求,那我覺得這個插件可以考慮卸載了。類似的還有 Path Autocomplete。
Auto Close TagLast updated: 2018/2/17Issues open/close: 100/59Download: 2.6M
從側邊欄可以看到我一個擴展都沒打開,實測在 HTML, js, jsx, tsx 文件中已經內置支持自動閉合標籤功能,但是 vue 還是不支持,可以看一下我提的 issue:auto close tag doesn't work in vue file。
這個擴展的作者開發了很多優秀的 VSCode 擴展,包括這個和下面的 Auto Rename Tag,最有名的應該是 Code Runner。我覺得有些擴展的功能被內置一方面也是好事,畢竟人的精力是有限的,維護開源項目還是很累的。
Auto Rename TagLast updated: 2019/10/27Issues open/close: 453/71Download: 2.6M
直接使用快捷鍵 F2 重構即可,不需要安裝擴展。auto close tag 和 auto rename tag 的擴展包 Auto Complete Tag 也可以考慮卸載了。
通過設置 "editor.renameOnType": true(默認沒開啟),你可以達到和 auto rename tag 一毛一樣的效果 , 如果你想只在某種特定語言中開啟這個特性,可以參考下面的配置:
// settings.json
"[html]": {
"editor.renameOnType": true,
},還有一款也是這個作者開發的擴展 Terminal 早就在 2017/7/22 就不維護了,下載量高達 581 K。不維護的理由作者在擴展主頁上也說了,一個是 Code Runner 的功能比它還多,另一個是 VSCode 已經內置了這個擴展的部分功能。
npm IntellisenseLast updated: 2017/2/23Issues open/close: 27/19Download: 2M
這個擴展的功能是支持在導入語句中提供 npm 模塊補全,從最後更新時間來推測這個功能應該 3 年前就被內置支持,但是下載量很恐怖啊,github 上還能看到 9 天前提的 issue,人間迷惑行為。
和這個擴展功能相同,下載量同樣非常高的另一個擴展是: Node.js Modules Intellisense。
Document ThisLast updated: 2018/6/4Issues open/close: 64/124Download: 638K
VSCode 已經內置自動生成 jsdoc 和注釋補全功能。
HTML SnippetsLast updated: 2017/12/28Issues open/close: 19/21Download: 3.3M
這個擴展的下載量充分說明了有些人安裝擴展只看名字,但凡瞅一眼這個擴展的主頁也不會安裝了:
TypeScript 相關擴展市場裡面搜索 TypeScript,勾選按照安裝數量排序,前面幾個最流行的和 TypeScript 相關的擴展的功能基本上全部已經被 VSCode 內置。VSCode 自身就是使用 TypeScript 編寫的,TypeScript 相關實用特性開發排期的優先級必然很高。所以我覺得其實 VSCode 沒必要安裝什麼 TypeScript 基礎特性相關的擴展,例如什麼模塊的自動導入啊,模塊名的重構啊。VSCode 還在積極發展嘛,雖說 VSCode 還不算是個 IDE,但是事實上把它當作 IDE 做開發的開發者真不少,尤其是前端開發,所以那些基礎特性即便是現在沒內置,必然在將來某個版本會被內置。Auto Import, TypeScript Hero, TypeScript Importer, Move TS 都可以考慮卸載了。安裝量最高的 auto import 下載量高達 867K,最少的都有 250 多 K。
維護不積極Color HighlightLast updated: 2017/7/12Issues open/close: 49/25Download: 894K
可以考慮 vscode-colorize 作為替代品。
TODO HighlightLast updated: 2018/7/22Issues open/close: 45/93Download: 953K
推薦替代品 Todo Tree,下面是參考了 TODO Highlight 源碼中的色彩配置修改 Todo Tree 配置的後使用效果:
推薦配置:
// settings.json
"todo-tree.general.tags": ["TODO:", "FIXME:"],
"todo-tree.highlights.defaultHighlight": {
"gutterIcon": true
},
"todo-tree.highlights.customHighlight": {
"TODO:": {
"foreground": "#fff",
"background": "#ffbd2a",
"iconColour": "#ffbd2a"
},
"FIXME:": {
"foreground": "#fff",
"background": "#f06292",
"icon": "flame",
"iconColour": "#f06292"
}
}
Live ServerLast updated: 2019/4/17Issues open/close: 332/326Download: 4.8M
live server 確實是個好東西,能讓你修改 HTML 代碼時自動刷新網頁,最主要的是它是以真實的伺服器託管的網頁,而不是像我們直接用瀏覽器打開文件時是使用 file:// 協議託管的,更貼近實際生產環境,file:// 協議還會導致跨域等問題。
這個擴展其實從更新時間上來看也不算太長沒更新,主要是你去它的 github issue 頁面 一看,有很多和性能相關的 issues,這個擴展的作者是個印度小哥,在擴展市場的主頁也置頂說了他最近非常忙,在找人維護這個項目。
我翻看了這個作者的 github 倉庫,發現他 fork 過 liver-server 這個 npm 包,但是這個包 18 年 10 月就不更新了。目前我也沒發現合適的替代品,有需要的讀者我覺得可以繼續用。我實際使用的時候碰到的一個問題就是控制臺會有些無用的警告,雖然不影響使用,但是看著不舒服。
Bracket Pair Colorizer 2Last updated: 2019/11/29Issues open/close: 187/38Download: 779K
進 github issues 頁面 看,一堆 issues 沒人理,和很多不維護的擴展一樣,最多的就是導致 CPU 佔用過高的問題。這個功能我感覺官方不太可能會集成,搜了一下 VSCode 中這個作者提的 issues,將近有 60 個,但也沒提 issue 讓官方考慮集成這個功能。有評論問我這個擴展有啥好的替代品,我其實也沒發現什麼好的替代品,有一個同類型的 Rainbow Brackets 更不靠譜,它 16 年 5 月 9 號上架的,5 月 12 號到現在就一直沒更新過,總共也就維護了幾天。我目前就是使用內置的縮進線,其實也夠用了,而且我發現自從不用這個插件,代碼的配色都清爽多了。
另一個和縮進線相關的擴展 indent-rainbow 也有一年沒維護了。
import-costLast updated: 2018/11/30Issues open/close: 81/57Download: 581K
import-cost 是 wix 開源項目下的 VSCode 擴展之一,另一個下載量比較高的擴展是 glean,是一個 React 重構擴展。想當初我剛入坑 VSCode 的時候這是當時被安利率最高的擴展之一。和前面說的幾個擴展一樣,有 CPU 佔用過高的 issues,沒人維護了。
Output ColorizerLast updated: 2017/7/6Issues open/close: 10/13Download: 240K
衝這最後更新時間我也不敢用了啊,從 issues 來看都說這個擴展的功能已經失效。如果你只是想要 log 文件有色彩高亮的話,我覺得不需要安裝擴展,貌似這是 VSCode 主題應該做的事情,默認主題已經支持 log 文件色彩高亮:
SVG ViewerLast updated: 2019//28Issues open/close: 21/20Download: 431K
這個擴展是個日本小哥開發的,該項目已經放棄維護,github 倉庫 都已經被封存了,推薦國人開發的替代品:vscode-svg2。
Regex PreviewerLast updated: 2018/4/27Issues open/close: 23/13Download: 172K
推薦在線工具 regex101。
vscode-fileheaderLast updated: 2016/8/10Issues open/close: 19/5Download: 143K
這個擴展自從第一次發布之後就一直沒更新過... 推薦國人開發的替代品:koroFileHeader。
XML ToolsLast updated: 2019/6/1Issues open/close: 53/171Download: 1.7M
從 github issues 來看貌似沒人維護了,同類的推薦替代品是紅帽的 XML。
其它一些不推薦使用的擴展TSLint如果你還不知道 tslint 去年年初就被廢棄了,並且現在是以插件的形式被集成到 ESLint 了,那你可能是個假前端。
BeautifyVSCode 內置的格式化器就是使用 js-beautify,但是前端界當前最流行的格式化工具是 prettier,建議安裝 prettier,然後設置 VSCode 使用 prettier 作為格式化器。同樣的道理,下載量奇高的 JS-CSS-HTML Formatter, Prettify JSON 等格式化插件也不推薦安裝。
// settings.json
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[less]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[yaml]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
jshint就沒見幾個開源項目還在用 jshint,推薦使用 ESLint。
JavaScript (ES6) code snippetsJavaScript (ES6) code snippets如果你平時開發 React,那你極大可能也安裝了 ES7 React/Redux/GraphQL/React-Native snippets,你可以去對比它倆提供的 snippets,後者基本上覆蓋了前者提供的 snippets,除了 commonjs 的導入語句,也就是說後者沒有 rqr 和 mde 的兩個代碼片段。snippets 擴展裝多了是會影響代碼提示的速度的,因為每次顯示的補全列表都是到對應語言的 snippets 裡面過濾出來的。
GitHub這個擴展的作者推薦使用 github 官方開發的 GitHub Pull Requests 作為替代品。
IntelliSense for CSS class names in HTMLHTML CSS Support 和 IntelliSense for CSS class names in HTML 是功能差不多兩個擴展,我更推薦使用前者,原因是它的貢獻者中有 VSCode 的核心開發人員。
如何推薦別人使用一些擴展我們可以在項目根目錄的 .vscode/extensions.json 文件中配置一些推薦和不推薦使用的擴展,在擴展市場選擇 Show Recommended Extensions 就可以看到我們推薦的擴展。
// .vscode/extensions.json
{
"recommendations": [
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"yutengjing.view-github-repository",
"yutengjing.open-in-external-app"
],
"unwantedRecommendations": [
"hookyqr.beautify",
"ms-vscode.vscode-typescript-tslint-plugin",
"dbaeumer.jshint"
]
}
最後VSCode 最近幾個月一直都在做設置同步的功能,也就是 Settings Sync 做的事情,估計正式上線後這個擴展也可以考慮卸載了。以前寫過推薦 VSCode 擴展的文章,那時我安裝的擴展有 100 多個,現在也就將近 50 個左右,是越來越挑剔了。我自己也寫了兩個簡單的擴展 View GitHub Repository 和 Open in External App,之前開發擴展後還提煉了一個 VSCode 擴展開發模板:vscode-extension-boilerplate,感興趣的讀者可以了解下。如果文章有什麼錯誤之處或者讀者有什麼推薦的更好的替代品,歡迎在評論區指出。
最後奉上我的 VSCode 擴展 gist 地址:cloudSettings,可以搭配 Settings Sync 使用。