新聞中心
前言
歡迎來到 vscode 的世界,開發(fā)工具有很多,找準(zhǔn)自己的需求,才能找到合適的工具,而不是“手里有錘子,看啥都像釘子”;對 VSCode 而言,定位在于編輯器而非 IDE,IDE 側(cè)重開箱即用,因而體量龐大,如 Eclipse。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、耿馬ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的耿馬網(wǎng)站制作公司
而編輯器側(cè)重對語言和工作流的豐富支持與自由,因而更為輕量,這意味著它不會針對某個語言或某個方面為用戶做太多事情,但也意味著 TA 有很高的自由度,如插件機(jī)制、倉庫配置機(jī)制等等,本文專注倉庫配置分享,插件機(jī)制另起一文。
配置概述
VS Code 是基于文件夾來進(jìn)行管理的,但 VS Code 允許你創(chuàng)建幾個跟當(dāng)前文件夾或者跟項(xiàng)目有關(guān)的配置保存在這個文件夾中,便于團(tuán)隊(duì)內(nèi)部進(jìn)行共享。這個文件夾就是.vscode。
這個文件夾中可以包含以下幾種文件。
配置文件(settings.json)
只有當(dāng)前這個文件夾在 VS Code 中被打開時才會生效。和我們說的修改用戶設(shè)置是一樣的。
任務(wù)設(shè)置(tasks.json)
關(guān)于 VS Code 任務(wù)系統(tǒng)的配置文件。
調(diào)試設(shè)置(launch.json)
用于說明如何調(diào)試當(dāng)前文件夾下的代碼。
vscode 倉庫配置之配置文件(settings)
作為編輯器,自然需要考慮個人偏好設(shè)置和多人開發(fā)時項(xiàng)目風(fēng)格統(tǒng)一問題,諸如字體大小、換行符、自動格式化插件配置等等,在 VSCode 中對應(yīng)功能是setting.json配置。
配置方式
基礎(chǔ)信息
User Settings :用戶設(shè)置,為默認(rèn)配置,會關(guān)聯(lián)所有項(xiàng)目,權(quán)重低于工作區(qū)設(shè)置。
Workspace Settings:工作區(qū)設(shè)置,為項(xiàng)目配置,默認(rèn)沒有,可以自行在項(xiàng)目根路徑下創(chuàng)建,項(xiàng)目路徑/.vscode/settings.json。
用戶設(shè)置入口:使用 UI 設(shè)置界面
使用 Ctrl+,(mac 是 cmd+,) 或者點(diǎn)擊左下角齒輪圖標(biāo)并選擇設(shè)置。然后在文本編輯器中找到 settings.json。
用戶設(shè)置入口:使用命令面板
使用 Ctrl+Shift+P (mac 是 cmd+shift+P)或者點(diǎn)擊左下角齒輪圖標(biāo),選擇命令面板。然后輸入 settings。
- Open User Settings 會打開 UI 設(shè)置界面。
- Open Settings (JSON) 會打開用戶設(shè)置 settings.json 文件。
工作區(qū)設(shè)置入口:.vscode 文件夾
在打開文件夾或者工作區(qū)時,手動創(chuàng)建 .vscode 文件夾,并在其中創(chuàng)建 settings.json 文件。
工作區(qū)設(shè)置入口:使用命令面板
使用 Ctrl+Shift+P (mac 是 cmd+shift+P)或者點(diǎn)擊左下角齒輪圖標(biāo),選擇命令面板。然后輸入 settings。
- Open Workspace Settings 也會打開 UI 設(shè)置界面。
- Open Workspace Settings (JSON) 會打開工作區(qū)設(shè)置 settings.json 文件。
配置內(nèi)容
關(guān)于所有的配置項(xiàng)可以點(diǎn)此查看相應(yīng)文檔,這里給出常見設(shè)置分享和搜索相關(guān)配置思路。
常見設(shè)置:編輯器外觀
- editor.lineNumbers:編輯器左側(cè)是否顯示行號,默認(rèn)顯示設(shè)置即可。
- editor.renderWhitespace: all:以點(diǎn)形式渲染所有空白字符(空格、制表符等)。
- editor.renderIndentGuides:縮進(jìn)參考線,默認(rèn)以代碼塊連接設(shè)置即可。
- editor.rulers: [120]:垂直標(biāo)尺,會在指定列號處畫上豎線。
- editor.minimap.enabled: false:是否顯示右側(cè)小地圖,個人喜歡關(guān)閉。
- editor.cursorBlinking/cursorStyle/cursorWidth:光標(biāo)樣式。
- editor.renderLineHighlight: 'all':設(shè)置當(dāng)前行高亮背景,行號也會被高亮。
常見設(shè)置:書寫體驗(yàn)
自定義空白符和制表符。
{
editor.detectIndentation: false, // 關(guān)閉 VS Code 的自動檢測來控制制表符或者空格鍵的使用
editor.tabSize: 1, // 制表符對應(yīng)的空格符長度
editor.insertSpaces: 1 // 空格符對應(yīng)空白長度
}自動保存。
{
editor.formatOnSave: true
}新建文件的默認(rèn)類型。
{
files.defaultLanguage: 'markdown'
}搜索相關(guān)配置思路
沒啥,記關(guān)鍵詞,編輯器相關(guān)如下;其他的,emmm,看相應(yīng)文檔。
- editor cursor, 是跟光標(biāo)渲染和多光標(biāo)相關(guān)的設(shè)置。
- editor find, 是與編輯器內(nèi)搜索相關(guān)的設(shè)置。
- editor font, 是與字體有關(guān)的設(shè)置。
- editor format, 是代碼格式化。
- editor suggest, 是和自動補(bǔ)全、建議窗口等相關(guān)的配置。
然后在 setting UI 面板里搜索即可。
vscode 倉庫配置之 tasks
任務(wù)系統(tǒng)的目的,是將各種形形色色的任務(wù)腳本盡可能地統(tǒng)一化,然后提供一套簡單但又定制化強(qiáng)的方式操作它們。
配置任務(wù)
任務(wù)的來源有兩種:對項(xiàng)目的自動檢測 以及 自定義的 task。
對項(xiàng)目的自動檢測
VSCode 會自動讀取項(xiàng)目下的配置文件,通過配置文件類型生成task。
假設(shè)項(xiàng)目下有package.json,內(nèi)容為:
{
"name": "sample",
"scripts": {
"test": ""
}
}運(yùn)行時就會發(fā)現(xiàn)默認(rèn)有兩條跟 npm 相關(guān)的任務(wù):
- npm install。
- npm test。
自定義的 task
首先我們在命令面板里,搜索 “配置任務(wù)”(Configure Task)并執(zhí)行。
我們能夠看到一個下拉框,這里面提供了多個不同的選項(xiàng)。
此處存在兩種自定義 task 的方案。
根據(jù)命令生成task.json
如果我們選擇第一個,也就是npm: install這一項(xiàng)的話,VS Code 會立刻在 .vscode文件夾下創(chuàng)建一個 tasks.json 文件,它的格式是 JSON,可讀性很好且易于修改。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "install",
"problemMatcher": []
}
]
}其中 tasks 屬性的值是一個數(shù)組,這就是我們可以在當(dāng)前文件夾下使用的所有任務(wù),接下來我們詳解任務(wù)對象的信息。
但是這種類型的任務(wù),受限于 VS Code 或者插件所支持的腳本工具,缺乏一定的靈活性。
使用模板創(chuàng)建 tasks.json 文件
緊接著 VS Code 就問我們了,希望使用哪種模板。這里模板的多少,同樣取決于你裝了哪些插件。默認(rèn)情況下,VS Code 為 MSBuild、Maven、.NET Core 提供了模板,而最后一個 Others,則是一個通用的模板,我們一起來看下它。
選擇完 Others 之后,VS Code 在當(dāng)前文件夾根目錄下的 .vscode 文件夾中,創(chuàng)建了 tasks.json 文件。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "new"
},
"options": {
"cwd": "",
"env": {},
"shell": {
"executable": "bash"
}
}
}
]
}
擴(kuò)展:group 屬性,運(yùn)行任務(wù)的分組
在task屬性中,還存在分組屬性group,這就需要先了解Run task了,我們在命令面板中輸入Run Task,會出現(xiàn)如下內(nèi)容。
運(yùn)行任務(wù)在上文已經(jīng)講解過了;關(guān)鍵是【運(yùn)行開發(fā)任務(wù)】和【運(yùn)行測試任務(wù)】;功能都是一樣的,提供任務(wù)列表,供用戶選擇執(zhí)行,唯一不同就是vscode加了一個分類,這樣便于用戶定義任務(wù)時進(jìn)行區(qū)分,而這個分類就是通過group屬性定義的。
而一般我們的打包或者測試任務(wù)都是固定且唯一的,這就意味著我們可以省略掉【選擇命令】這一步,一鍵運(yùn)行。如何設(shè)置呢?
"group": {
"isDefault": true,
"kind": "test" // 這是 Run Test Task 的一鍵執(zhí)行命令;如果設(shè)定 Run Build Task 則 kind 的值為 build
}
擴(kuò)展:執(zhí)行命令時的參數(shù)
task 對象定義中有一個屬性args,是一個數(shù)組,在運(yùn)行指定 command 的時候,args 里的每個值都會被當(dāng)作其參數(shù)傳入,如:
{
"label": "echo",
"type": "shell",
"command": "echo 'Hello World'"
}我們可以改寫為:
{
"label": "echo",
"type": "shell",
"command": "echo",
"args": [
"hello world"
]
}但對于命令而言,不同的執(zhí)行 shell 對空白符、$、引號等等都可能有不同的理解,這就意味著需要對參數(shù)進(jìn)行轉(zhuǎn)義規(guī)則的設(shè)定,所以 args 數(shù)組也可以存儲對象。
"args": [
{
"value": "Hello World",
"quoting": "escape"
}
]
對于quoting而言,存在三個值的情況。
舉例而言
escape 下執(zhí)行的腳本實(shí)際上是:
echo Hello\ World
strong 下執(zhí)行的腳本實(shí)際上是:
echo 'Hello World'
weak 下執(zhí)行的腳本實(shí)際上是:
echo "Hello World"
上面我們是以 bash 作為 shell 進(jìn)行分析的,那對于 cmd、powershell 等等呢?可以搜索 “quoting mechanism” 來查找,也可以查閱VS Code 關(guān)于 Task 參數(shù)轉(zhuǎn)義部分的文檔。
擴(kuò)展:多任務(wù)執(zhí)行
實(shí)現(xiàn)同時運(yùn)行多個任務(wù),其實(shí)挺簡單的,就是配置dependsOn屬性,是個數(shù)組,存儲著所有要執(zhí)行的任務(wù)的labe。
舉例,我希望執(zhí)行runOrderFirst時,幫我同時啟動微應(yīng)用基座項(xiàng)目和其內(nèi)部的 order 項(xiàng)目。
那我們可以配置如下 tasks.json,其中包含【啟動基座】、【啟動 order】的 task。
{
"label": "runMapp",
"type": "npm",
"script": "start:dev"
},
{
"type": "npm",
"script": "serve",
"path": "apps/order/",
"problemMatcher": [],
"label": "runOrder",
"detail": "啟動 order"
},然后我們新增一個 task,用于聚合這兩個,tasks.json內(nèi)容變?yōu)槿缦拢?/p>
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "runMapp",
"type": "npm",
"script": "start:dev"
},
{
"type": "npm",
"script": "serve",
"path": "apps/order/",
"problemMatcher": [],
"label": "runOrder",
"detail": "啟動 order"
},
{
"label": "runOrderFirst",
"dependsOn": [
"runMapp",
"runOrder"
]
}
]
}運(yùn)行這個 task 即可,效果如下:
這種啟動項(xiàng)目的命令很常用,每次還得選下命令挺麻煩,我們可以利用分組的功能,將之設(shè)置為測試任務(wù)并默認(rèn),這樣Run Test Task就可以直接執(zhí)行了。
{
"label": "runOrderFirst",
"dependsOn": [
"runMapp",
"runOrder"
],
"group": {
"kind": "test",
"isDefault": true
}
}效果如下:
運(yùn)行任務(wù)
在控制面板中使用命令Run Task;然后選擇對應(yīng)的命令即可。
比如選擇“echo”這個任務(wù)(這個就是我們在 label 里寫的名字),按下回車后,VS Code 會問我們 “選擇根據(jù)何種錯誤和警告掃描任務(wù)輸出”,現(xiàn)在就選擇第一個選項(xiàng) “繼續(xù)而不掃描任務(wù)輸出” 好了。
例子
喚起 Chrome 瀏覽器,我們先實(shí)現(xiàn)在 mac 中喚起,再考慮通用。
首先:定義 task
{
"version": "2.0.0",
"tasks": [
{
"label": "chrome",
"type": "process",
"command": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
]
}其次:運(yùn)行 task
我們運(yùn)行看看它的效果,在控制面板中使用命令Run Task,然后選擇chrome。
最后:考慮平臺不同
如果使用的系統(tǒng)是 Windows 或者 Linux,那么這個任務(wù)就沒法使用了,因?yàn)?Chrome 的地址完全對不上號。
所以我們可以修改task.json,為系統(tǒng)定制命令。
{
"version": "2.0.0",
"tasks": [
{
"label": "chrome",
"type": "process",
"command": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"windows": {
"command": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
},
"linux": {
"command": "/usr/bin/google-chrome"
}
}
]
}vscode 倉庫配置之調(diào)試設(shè)置(launch)
調(diào)試,是最必不可缺的一環(huán)功能,對于大多數(shù)的 IDE 而言,因?yàn)槭褂脤ο蟠_定而使用極其方便,比如 IDEA 之于 JAVA,甚至谷歌瀏覽器之于前端;而對于 vscode 這種區(qū)別于 IDE 的編輯器而言,這需要考慮更大的靈活性,這就需要配置文件實(shí)現(xiàn)了。
常規(guī)使用
考慮新手友好,vscode 會存在默認(rèn)設(shè)置,即開箱即用的調(diào)試功能;以nodejs為例,分兩步:設(shè)置斷點(diǎn),調(diào)試。
設(shè)置斷點(diǎn)
有兩個方案,可以在文件中輸入關(guān)鍵詞【debugger】;也可以在文件的左側(cè)可以點(diǎn)上紅點(diǎn),效果一致。
調(diào)試
可以點(diǎn)擊左側(cè)的 debugger 按鈕【一只甲殼蟲圖標(biāo)】,也可以使用快捷鍵【cmd + shift + D】。然后選擇要調(diào)試的程序類型,這時默認(rèn)會對當(dāng)前打開文件進(jìn)行調(diào)試處理。
高階使用:調(diào)試配置launch.json
那如果需求不止單文件,而是對一個項(xiàng)目進(jìn)行調(diào)試呢?或者對項(xiàng)目內(nèi)的指定文件,這就需要launch.json文件了,同任務(wù)功能,這個文件也是在.vscode下。
如何創(chuàng)建
點(diǎn)擊左側(cè)的 debugger 按鈕【一只甲殼蟲圖標(biāo)】,或者使用快捷鍵【cmd + shift + D】喚起 debugger 面板后,存在創(chuàng)建入口點(diǎn)擊,然后選中類型即會自動創(chuàng)建。
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息,請?jiān)L問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "啟動程序",
"program": "${file}"
}
]
}
如何書寫
對于書寫launch.json文件,我們有兩個工具可以使用。
1.借助 VS Code 的調(diào)試器插件提供的模板。
在創(chuàng)建launch.json時,會要求選擇類型,從而創(chuàng)建對應(yīng)的模板。
2.自動補(bǔ)全功能。
另一個能夠幫助到我們的,就是在書寫配置屬性的時候使用自動補(bǔ)全功能。當(dāng)我們在書寫新的屬性時,按下 Ctrl + Space,就能夠喚出建議列表,建議列表里提供了當(dāng)前調(diào)試配置里可以使用的所有屬性,然后我們就可以按需選用了。
尾聲
到此,倉庫配置相關(guān)的分享就結(jié)束啦;這節(jié)的信息很多,而且因?yàn)榫庉嬈鞯哪J(rèn)設(shè)置肯定是符合大部分場景需求的,所以我們大多數(shù)人很有可能從未接觸過這些概念,但我們生來從不是為了多數(shù)人,至少我不是,我努力就是為了成為更好的自己。
舉個場景吧,不白撒雞血,前些日子開一個項(xiàng)目,希望接入保存自動格式化,也就是接入eslint+prettier,多數(shù)人入職時候這些就已經(jīng)在項(xiàng)目里配置好了,我也一樣,所以一開始有點(diǎn)懵,但還是想嘗試,最后發(fā)現(xiàn)其實(shí)就是配置.vscode文件中setting.json文件,有興趣的同學(xué)可以參考文末【關(guān)于實(shí)現(xiàn)項(xiàng)目代碼風(fēng)格統(tǒng)一的參考貼】,人家寫的很好,我就不重寫一篇了。
標(biāo)題名稱:你不知道的Vscode之項(xiàng)目約束|倉庫配置
當(dāng)前地址:http://www.dlmjj.cn/article/cosdidh.html


咨詢
建站咨詢
