DevOps & verktyg

Visual Studio Code

Konfiguration, extensions och arbetsflöden för en snabbare editor

01 · Konfiguration

VS Code-konfiguration

Fyra konfigurationer som tar dig från standardinstallation till en editor anpassad efter ditt arbetssätt: kortkommandon, settings.json, debugging via launch.json och automatisering med tasks.json.

Essential Keyboard Shortcuts

Viktiga kortkommandon för effektiv kodning i VS Code.

Kortkommandon
// Windows/Linux | macOS
Ctrl+Shift+P   | Cmd+Shift+P    // Command Palette
Ctrl+P         | Cmd+P          // Quick Open (öppna filer)
Ctrl+Shift+F   | Cmd+Shift+F    // Sök i hela projektet
Ctrl+/         | Cmd+/          // Toggle kommentar
Alt+Up/Down    | Opt+Up/Down    // Flytta rad upp/ner
Shift+Alt+Down | Shift+Opt+Down // Duplicera rad
Ctrl+D         | Cmd+D          // Välj nästa förekomst
Ctrl+Shift+L   | Cmd+Shift+L    // Välj alla förekomster
F2             | F2             // Rename symbol
Ctrl+Space     | Cmd+Space      // Trigger IntelliSense
Ctrl+.         | Cmd+.          // Quick Fix
Alt+Shift+F    | Opt+Shift+F    // Formatera dokument

Sitter de här i ryggmärgen kodar du märkbart snabbare.

Settings.json Configuration

Anpassa VS Code med kraftfulla inställningar.

JSON
{
  // Editor inställningar
  "editor.fontSize": 14,
  "editor.fontFamily": "'Fira Code', 'Cascadia Code', monospace",
  "editor.fontLigatures": true,
  "editor.tabSize": 2,
  "editor.wordWrap": "on",
  "editor.minimap.enabled": true,
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.organizeImports": true
  },
  
  // Tema och utseende
  "workbench.colorTheme": "One Dark Pro",
  "workbench.iconTheme": "material-icon-theme",
  
  // Terminal
  "terminal.integrated.fontSize": 13,
  "terminal.integrated.defaultProfile.windows": "PowerShell",
  
  // Files
  "files.autoSave": "afterDelay",
  "files.autoSaveDelay": 1000,
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  
  // Git
  "git.autofetch": true,
  "git.confirmSync": false,
  
  // Extensions
  "prettier.singleQuote": true,
  "prettier.semi": true,
  "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"]
}

Placera i .vscode/settings.json för projektspecifika inställningar.

Launch.json Debugging

Konfigurera debugging för olika miljöer.

JSON
{
  "version": "0.2.0",
  "configurations": [
    {
      // Node.js debugging
      "type": "node",
      "request": "launch",
      "name": "Debug Node App",
      "skipFiles": ["<node_internals>/**"],
      "program": "${workspaceFolder}/src/index.js",
      "env": {
        "NODE_ENV": "development"
      }
    },
    {
      // React debugging
      "type": "chrome",
      "request": "launch",
      "name": "Debug React App",
      "url": "http://localhost:3000",
      "webRoot": "${workspaceFolder}/src",
      "sourceMapPathOverrides": {
        "webpack:///src/*": "${webRoot}/*"
      }
    },
    {
      // Jest test debugging
      "type": "node",
      "request": "launch",
      "name": "Debug Jest Tests",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": ["--runInBand", "--watchAll=false"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
    },
    {
      // Python debugging
      "name": "Python: Current File",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": true
    }
  ]
}

Placera i .vscode/launch.json för att konfigurera debugging sessioner.

Tasks.json Build Automation

Automatisera vanliga uppgifter med VS Code tasks.

JSON
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Build TypeScript",
      "type": "typescript",
      "tsconfig": "tsconfig.json",
      "problemMatcher": ["$tsc"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    },
    {
      "label": "Run Tests",
      "type": "npm",
      "script": "test",
      "group": "test",
      "problemMatcher": []
    },
    {
      "label": "Start Dev Server",
      "type": "npm",
      "script": "dev",
      "isBackground": true,
      "problemMatcher": []
    },
    {
      "label": "Docker Compose Up",
      "type": "shell",
      "command": "docker-compose up -d",
      "presentation": {
        "reveal": "always",
        "panel": "new"
      }
    },
    {
      "label": "Clean & Install",
      "type": "shell",
      "command": "rm -rf node_modules package-lock.json && npm install",
      "windows": {
        "command": "rmdir /s /q node_modules && del package-lock.json && npm install"
      },
      "problemMatcher": []
    }
  ]
}

Kör tasks med Ctrl+Shift+B eller via Command Palette.

02 · Extensions

Rekommenderade extensions

Extensions grupperade efter syfte: grundpaketet alla bör ha, språkstöd och rena produktivitetshöjare.

Essential Extensions

Must-have extensions för alla utvecklare.

  • ESLintdbaeumer.vscode-eslint

    JavaScript/TypeScript linting

  • Prettieresbenp.prettier-vscode

    Kodformatering

  • GitLenseamodio.gitlens

    Git supercharged

  • Live Serverritwickdey.LiveServer

    Lokal utvecklingsserver

  • Auto Rename Tagformulahendry.auto-rename-tag

    Synka HTML/XML tags

Language Support

Språkspecifika extensions för bättre utvecklingsupplevelse.

  • Pythonms-python.python

    Python språkstöd

  • C/C++ms-vscode.cpptools

    C/C++ IntelliSense

  • Java Extension Packvscjava.vscode-java-pack

    Java utveckling

  • Gogolang.go

    Go språkstöd

  • Veturoctref.vetur

    Vue.js utveckling

Productivity Boosters

Extensions som ökar din produktivitet.

  • GitHub CopilotGitHub.copilot

    AI kod-assistent

  • Thunder Clientrangav.vscode-thunder-client

    REST API testing

  • Dockerms-azuretools.vscode-docker

    Docker support

  • Remote - SSHms-vscode-remote.remote-ssh

    Fjärrutveckling

  • Project Manageralefragnani.project-manager

    Hantera projekt

03 · Snippets

Egna snippets

Snippets genererar återkommande kod på en prefix. Lägg till dem under Code > Preferences > User Snippets.

React Component Snippet

Language: javascriptreact

JSON
"React Functional Component": {
  "prefix": "rfc",
  "body": [
    "import React from 'react';",
    "",
    "const ${1:ComponentName} = ({ ${2:props} }) => {",
    "  return (",
    "    <div className="${3:container}">",
    "      ${4:// Content here}",
    "    </div>",
    "  );",
    "};",
    "",
    "export default ${1:ComponentName};"
  ],
  "description": "Create a React functional component"
}

Express Route Handler

Language: javascript

JSON
"Express Route Handler": {
  "prefix": "route",
  "body": [
    "router.${1|get,post,put,delete|}('${2:/path}', async (req, res) => {",
    "  try {",
    "    ${3:// Route logic here}",
    "    res.status(200).json({",
    "      success: true,",
    "      data: ${4:result}",
    "    });",
    "  } catch (error) {",
    "    console.error('Error:', error);",
    "    res.status(500).json({",
    "      success: false,",
    "      error: error.message",
    "    });",
    "  }",
    "});"
  ],
  "description": "Create an Express route handler with error handling"
}

Console Log with Label

Language: javascript

JSON
"Console Log": {
  "prefix": "clg",
  "body": [
    "console.log('${1:label}:', ${2:value});"
  ],
  "description": "Log to console with label"
}

04 · Workspace

Workspace-hantering

Multi-root Workspace
Arbeta med flera projekt samtidigt
Skapa en .code-workspace fil för att gruppera relaterade projekt
Workspace Trust
Kontrollera vilka workspace som får köra kod automatiskt
Aktivera restricted mode för okända projekt
Sync Settings
Synkronisera inställningar mellan flera enheter
Använd Settings Sync med GitHub-konto
Profiles
Skapa olika profiler för olika typer av utveckling
Separata profiler för web, Python, och DevOps arbete

05 · Pro tips

VS Code pro tips

Använd Command Palette flitigt
Nästan allt i VS Code kan göras via Command Palette (Cmd/Ctrl+Shift+P).
Lär dig Emmet shortcuts
Skriv HTML och CSS mycket snabbare med Emmet abbreviations.
Integrera terminal i arbetsflödet
Använd integrerade terminalen istället för att byta mellan fönster.