Загрузка...
Загрузка...
Подробное руководство по настройке VS Code для веб-разработки. Лучшие плагины, настройки, горячие клавиши и автоматизация для повышения продуктивности.
Поделитесь с коллегами или изучите другие материалы блога
Visual Studio Code является одним из самых популярных редакторов кода для веб-разработки. Его гибкость, богатая экосистема плагинов и мощные возможности делают его незаменимым инструментом для разработчиков. В этой статье мы рассмотрим лучшие плагины, настройки и техники для максимальной продуктивности в веб-разработке.
Правильная настройка VS Code может значительно повысить продуктивность разработчика. Хорошо настроенный редактор позволяет:
ESLint:
// settings.json
{
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact"
],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
Prettier:
// settings.json
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"prettier.singleQuote": true,
"prettier.trailingComma": "es5"
}
JavaScript (ES6) code snippets:
// Примеры сниппетов
// clg → console.log()
// clr → console.clear()
// clo → console.log('object :>> ', object)
HTML CSS Support:
// settings.json
{
"html.autoClosingTags": true,
"html.autoCreateQuotes": true,
"css.validate": true,
"less.validate": true,
"scss.validate": true
}
CSS Peek:
HTML Snippets:
<!-- Примеры сниппетов -->
<!-- html5 → HTML5 boilerplate -->
<!-- meta → meta tags -->
<!-- link → link tags -->
ES7+ React/Redux/React-Native snippets:
// Примеры сниппетов для React
// rfc → React Functional Component
// rcc → React Class Component
// rccp → React Class Component with PropTypes
// rccs → React Class Component with State
Vetur (для Vue.js):
// settings.json
{
"vetur.validation.template": true,
"vetur.validation.script": true,
"vetur.validation.style": true,
"vetur.format.defaultFormatter.html": "prettier",
"vetur.format.defaultFormatter.js": "prettier"
}
Tabnine:
GitHub Copilot:
// Пример использования Copilot
// Напишите комментарий, и Copilot предложит код
// "функция для валидации email"
function validateEmail(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
IntelliSense for CSS class names:
// settings.json
{
"css.validate": false,
"less.validate": false,
"scss.validate": false
}
Bracket Pair Colorizer 2:
// settings.json
{
"bracket-pair-colorizer-2.colors": [
"#f44336",
"#2196F3",
"#FF9800",
"#4CAF50"
]
}
Path Intellisense:
Auto Rename Tag:
GitLens:
// settings.json
{
"gitlens.codeLens.enabled": true,
"gitlens.hovers.enabled": true,
"gitlens.blame.format": "${author}, ${agoOrDate}"
}
Git History:
Git Graph:
Debugger for Chrome:
// launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome against localhost",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
}
]
}
Debugger for Firefox:
// launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Firefox",
"type": "firefox",
"request": "launch",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
}
]
}
Performance Profiler:
Jest:
// settings.json
{
"jest.autoRun": {
"watch": false,
"onSave": "test-file"
},
"jest.showCoverageOnLoad": true
}
Mocha Test Explorer:
Cypress Helper:
JSDoc Comment:
/**
* Валидирует email адрес
* @param {string} email - Email для валидации
* @returns {boolean} - Результат валидации
*/
function validateEmail(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
Document This:
Markdown All in One:
// settings.json
{
"markdown.extension.toc.levels": "1..6",
"markdown.extension.toc.orderedList": true,
"markdown.extension.preview.breaks": true
}
Markdown Preview Enhanced:
// .vscode/settings.json
{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false,
"editor.rulers": [80, 120],
"editor.wordWrap": "bounded",
"editor.minimap.enabled": false,
"editor.suggestSelection": "first",
"editor.acceptSuggestionOnCommitCharacter": false,
"editor.acceptSuggestionOnEnter": "on",
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": true
}
}
// .vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "npm install",
"type": "shell",
"command": "npm install",
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
}
},
{
"label": "npm run dev",
"type": "shell",
"command": "npm run dev",
"group": "build",
"isBackground": true,
"problemMatcher": {
"pattern": {
"regexp": "^$"
},
"background": {
"activeOnStart": true,
"beginsPattern": "Starting development server",
"endsPattern": "Local:"
}
}
}
]
}
// .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/src",
"sourceMapPathOverrides": {
"webpack:///src/*": "${webRoot}/*"
}
},
{
"name": "Attach to Chrome",
"type": "chrome",
"request": "attach",
"port": 9222,
"webRoot": "${workspaceFolder}/src"
}
]
}
// keybindings.json
[
{
"key": "ctrl+shift+p",
"command": "workbench.action.showCommands"
},
{
"key": "ctrl+p",
"command": "workbench.action.quickOpen"
},
{
"key": "ctrl+shift+f",
"command": "workbench.action.findInFiles"
},
{
"key": "ctrl+shift+o",
"command": "workbench.action.gotoSymbol"
},
{
"key": "f12",
"command": "editor.action.revealDefinition"
},
{
"key": "alt+f12",
"command": "editor.action.peekDefinition"
},
{
"key": "shift+f12",
"command": "editor.action.goToReferences"
}
]
// keybindings.json
[
{
"key": "ctrl+alt+c",
"command": "editor.action.commentLine",
"when": "editorTextFocus"
},
{
"key": "ctrl+alt+u",
"command": "editor.action.transformToUppercase",
"when": "editorTextFocus"
},
{
"key": "ctrl+alt+l",
"command": "editor.action.transformToLowercase",
"when": "editorTextFocus"
}
]
// snippets/javascript.json
{
"Console log": {
"prefix": "clg",
"body": [
"console.log($1);"
],
"description": "Console log"
},
"Function": {
"prefix": "func",
"body": [
"function ${1:functionName}($2) {",
"\t$3",
"}"
],
"description": "Function declaration"
},
"Arrow function": {
"prefix": "arrow",
"body": [
"const ${1:functionName} = ($2) => {",
"\t$3",
"};"
],
"description": "Arrow function"
}
}
// snippets/react.json
{
"React Functional Component": {
"prefix": "rfc",
"body": [
"import React from 'react';",
"",
"const ${1:ComponentName} = () => {",
"\treturn (",
"\t\t<div>",
"\t\t\t$2",
"\t\t</div>",
"\t);",
"};",
"",
"export default ${1:ComponentName};"
],
"description": "React Functional Component"
}
}
// workspace.code-workspace
{
"folders": [
{
"name": "Frontend",
"path": "./frontend"
},
{
"name": "Backend",
"path": "./backend"
},
{
"name": "Shared",
"path": "./shared"
}
],
"settings": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
},
"extensions": {
"recommendations": [
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"ms-vscode.vscode-typescript-next"
]
}
}
// settings.json для Remote SSH
{
"remote.SSH.defaultExtensions": [
"ms-vscode.vscode-typescript-next",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint"
],
"remote.SSH.configFile": "~/.ssh/config"
}
// settings.json
{
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false,
"extensions.ignoreRecommendations": true
}
# Проверка использования памяти
code --status
Правильная настройка VS Code может значительно повысить продуктивность веб-разработчика. Выбор подходящих плагинов, настройка рабочего пространства и освоение горячих клавиш помогут ускорить процесс разработки и улучшить качество кода.
Ключевые моменты для запоминания:
Следуя этим рекомендациям, вы сможете создать максимально эффективную среду разработки в VS Code, которая будет адаптирована под ваши потребности и стиль работы.