Interactive setup for Svelte LSP development environment
Sets up Svelte LSP development environment with language server, type checking, formatting, and linting tools. Use when starting a new Svelte project or adding tooling to an existing one.
/plugin marketplace add zircote/svelte-lsp/plugin install svelte-lsp@zircote-lspThis command will configure your Svelte development environment with svelte-language-server and essential tools.
| Tool | Version | Notes |
|---|---|---|
| svelte-language-server | 0.17.x | LSP server |
| svelte-check | 4.0.x | Type checking |
| prettier | 3.x | Code formatter |
| prettier-plugin-svelte | 3.x | Svelte formatter |
| eslint | 9.x | Linter |
| eslint-plugin-svelte | 3.x | Svelte linter |
First, verify Node.js is installed:
node --version
npm --version
If not installed, download from https://nodejs.org/ or use a version manager:
# macOS (Homebrew)
brew install node
# Linux (nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install --lts
Check if svelte-language-server is available:
which svelte-language-server || echo "svelte-language-server not found"
Install globally:
npm install -g svelte-language-server
Verify installation:
svelte-language-server --version
If you're in a Svelte project, install development dependencies:
# Type checking
npm install -D svelte-check
# Formatting
npm install -D prettier prettier-plugin-svelte
# Linting
npm install -D eslint eslint-plugin-svelte
Create .prettierrc in your project root:
cat > .prettierrc << 'EOF'
{
"plugins": ["prettier-plugin-svelte"],
"semi": true,
"singleQuote": true,
"trailingComma": "es5",
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"overrides": [
{
"files": "*.svelte",
"options": {
"parser": "svelte"
}
}
]
}
EOF
Initialize ESLint configuration:
# Create .eslintrc.json
cat > .eslintrc.json << 'EOF'
{
"extends": ["eslint:recommended", "plugin:svelte/recommended"],
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"env": {
"browser": true,
"es2017": true,
"node": true
},
"rules": {
"no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }]
}
}
EOF
For TypeScript support in Svelte components:
# Install TypeScript
npm install -D typescript
# Initialize svelte-check configuration
npx svelte-check --init
This creates a tsconfig.json file configured for Svelte.
Check that .lsp.json exists and is properly configured:
cat .lsp.json
Expected configuration:
{
"svelte": {
"command": "svelte-language-server",
"args": ["--stdio"],
"extensionToLanguage": {
".svelte": "svelte"
},
"transport": "stdio"
}
}
Confirm hooks are loaded:
cat hooks/hooks.json | head -50
Create a test component and verify tooling:
# Create test file
cat > Test.svelte << 'EOF'
<script>
let count = 0;
function increment() {
count += 1;
}
</script>
<button on:click={increment}>
Count: {count}
</button>
<style>
button {
padding: 0.5rem 1rem;
font-size: 1rem;
}
</style>
EOF
# Test formatting
npx prettier --check Test.svelte
# Test linting
npx eslint Test.svelte
# Test type checking
npx svelte-check --threshold warning
# Clean up
rm Test.svelte
| Tool | Purpose | Hook |
|---|---|---|
svelte-language-server | LSP server for IDE features | Core |
prettier | Code formatting | prettier-svelte |
svelte-check | Type checking and validation | svelte-check |
eslint | Linting | eslint-svelte |
.svelte files exist in projectnpm list -g svelte-language-servernode --version (requires v16+)npm install -g svelte-language-server --forcenpm install -D sveltenpx svelte-check --initnpm installnpm list prettier-plugin-svelte.prettierrc has the plugin configurednpx prettier --write "*.svelte"npm list eslint-plugin-svelteplugin:svelte/recommendednpm list eslint (version 8.x or 9.x)command -v npxOne-liner to install all development tools:
npm install -D svelte-check prettier prettier-plugin-svelte eslint eslint-plugin-svelte typescript
# Global LSP server
npm install -g svelte-language-server
# Project tools
npm install -D svelte-check prettier prettier-plugin-svelte eslint eslint-plugin-svelte
# Initialize configurations
npx prettier --init
npx eslint --init
After running these commands, provide a status summary showing which tools were installed successfully and any that failed.