当我在Visual Studio code中保存文件时,我想使用内置格式化器自动格式化TypeScript代码。
我知道下面的选项,但没有一个足够好:
格式手动Shift + Alt + F
格式输入“编辑器”。formatOnType”:真正的
当你按回车键时,它会格式化行。不幸的是,当您用鼠标单击另一行或按上下箭头时,它会保持未格式化。
使用现有扩展
我试过这个方法,但效果不太好。
使用美化“美化”。onSave”:真正的
它不适用于TypeScript
编写自定义扩展
如果你想正确地处理自动保存和构建,这是很棘手的。
对于MAC用户,
将这一行添加到默认设置中
文件路径为:/Users/USER_NAME/Library/Application Support/Code/User/settings.json
“tslint。autoFixOnSave”:真正的
该文件的示例如下:
{
"window.zoomLevel": 0,
"workbench.iconTheme": "vscode-icons",
"typescript.check.tscVersion": false,
"vsicons.projectDetection.disableDetect": true,
"typescript.updateImportsOnFileMove.enabled": "always",
"eslint.autoFixOnSave": true,
"tslint.autoFixOnSave": true
}
经过几个小时的挣扎……以下步骤是有效的。
详情如下。
安装这个扩展
https://marketplace.visualstudio.com/items?itemName=pucelle.run-on-save
添加以下json到下面的文件:
文件:
<your-project-directory>\.vscode\settings.json
OR
%UserProfile%\AppData\Roaming\Code\User\settings.json
JSON:
注意:请确保在下块之前和之后使用逗号。
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 1000,
"runOnSave.statusMessageTimeout": 3000,
"runOnSave.commands": [
{
"match": ".*\\.*",
"command": "editor.action.formatDocument",
"runIn": "vscode"
}
],
现在,当代码被更改时,1秒后,它会被自动格式化和保存。
避免冲突的最好方法是为每种语言定义单独的格式化器,例如,如果我使用Rust和Typescript,我想分别使用扩展Rust- analyzer和pretty来格式化代码,因此在我的.vscode/settings.json中:
{
"editor.defaultFormatter": null,
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer",
"editor.formatOnSave": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
}
请记住,必须首先安装Prettier和rust-analyzer扩展。