Herb 언어 서버: HTML-aware ERB 파싱을 위한 LSP 통합

@herb-tools/language-server - npm

작성자
발행일
2025년 08월 27일

핵심 요약

  • 1 @herb-tools/language-server는 Herb 파서를 활용하여 HTML-aware ERB 파싱을 위한 언어 서버 프로토콜(LSP) 통합을 제공합니다.
  • 2 VS Code, Zed, Neovim, Sublime Text 등 다양한 편집기에서 설치 및 활용 가능하며, npm/yarn 또는 npx를 통해 직접 실행할 수 있습니다.
  • 3 .herb-lsp/config.json 파일을 통해 언어 서버의 동작을 구성할 수 있으며, 특히 포맷팅(들여쓰기 너비, 최대 줄 길이) 설정이 가능합니다.

도입

@herb-tools/language-server는 Herb 파서를 기반으로 HTML-aware ERB(Embedded Ruby) 템플릿을 위한 언어 서버 프로토콜(LSP) 통합을 제공하는 핵심 도구입니다. 이 패키지는 개발자들이 ERB 파일을 효율적으로 편집하고 관리할 수 있도록 다양한 편집기에서 코드 완성, 진단, 포맷팅 등의 기능을 지원합니다. 특히 Ruby on Rails와 같이 ERB를 광범위하게 사용하는 프로젝트에서 개발 생산성을 크게 향상시키는 것을 목표로 합니다.

Herb 언어 서버 설치 및 연동

Herb 언어 서버는 다양한 개발 환경에서 손쉽게 통합될 수 있습니다. Visual Studio Code 및 Open VSX Registry에서는 전용 LSP 확장 프로그램을 설치하여 사용합니다. Zed의 경우 공식 Ruby 확장 프로그램에 포함되어 있으며, Neovim (nvim 0.11+ 필요)에서는 nvim-lspconfig를 통해 herb_ls를 설정에 추가합니다. Sublime Text에서는 Sublime LSP와 함께 LSP.sublime-settings 파일을 업데이트하여 herb 클라이언트를 구성합니다.

  • Neovim 설정 예시: lua require('lspconfig') vim.lsp.enable('herb_ls')
  • Sublime Text 설정 예시: json { "clients": { "herb": { "enabled": true, "command": [ "herb-language-server", "--stdio" ], "selector": "text.html.ruby | text.html.rails", "settings": { "languageServerHerb.linter": { "enabled": true, "excludedRules": ["parser-no-errors"] } }, "initializationOptions": { "enabledFeatures": { "diagnostics": true }, "experimentalFeaturesEnabled": true } } } } 또한, npm 또는 yarn을 사용하여 전역으로 설치하거나, npx로 설치 없이 직접 실행할 수 있습니다. 실행 시 --stdio, --node-ipc, --socket=<port> 옵션을 활용합니다.

설정 파일 (.herb-lsp/config.json)

프로젝트 루트의 .herb-lsp/config.json 파일을 통해 언어 서버를 구성할 수 있습니다. 이 파일은 특히 포맷팅 동작을 제어하며, enabled, indentWidth, maxLineLength 등의 옵션을 제공합니다.

  • 포맷팅 설정 예시: json { "options": { "formatter": { "enabled": true, "indentWidth": 2, "maxLineLength": 80 } } } 포맷팅 기능은 현재 베타 단계이며 기본적으로 비활성화되어 있습니다. VS Code 사용자는 전역 설정으로도 제어 가능합니다.

결론

@herb-tools/language-server는 HTML-aware ERB 파일 작업을 위한 강력한 LSP 통합을 제공하여 Ruby 개발 워크플로우를 현대화하고 생산성을 높이는 데 기여합니다. 다양한 편집기 지원과 유연한 설정 옵션을 통해 개발자는 자신의 환경에 최적화된 ERB 개발 경험을 구축할 수 있습니다. 특히 포맷팅과 같은 지속적으로 개선되는 기능들은 이 도구가 Ruby 기반 웹 개발 생태계에서 중요한 역할을 할 것임을 시사합니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!