웹 디버깅 툴과 vConsole

Development디버깅디버깅 툴vconsole

웹 디버깅 툴? 왜 필요한가?

  • 웹에서 개발을 할 때, 디버깅 할 수 있는 툴 (콘솔창) 도입의 필요성을 느낌
  • PC의 개발자 도구처럼 모바일에서도 콘솔 로그를 확인하며 디버깅할 수 있는 도구가 필요
  • 웹뷰 테스트 및 개발 진행을 더 편리하게 하기 위해서 도입
  • production 제외한 나머지 환경 (dev, stage)에서만 보일 수 있도록 작업할 수 있는 무언가 필요


vConsole


기능

  • Logs: console.log|info|error|...
  • Network: XMLHttpRequest, Fetch, sendBeacon
  • Element: HTML elements tree
  • Storage: Cookies, LocalStorage, SessionStorage
  • Execute JS command manually
  • Custom plugins

튜토리얼

장점

  • 다양한 기능 및 플러그인 적용 가능
  • 깔끔하고 편리한 UI
  • 테마 세팅 가능 (light/dark)
  • 쉽고 빠른 설치, 모바일 / 웹 반응형
  • 주기적인 관리 (마지막 commit 2022/04/14, 최근 릴리즈 2022/04, 한달 다운로드 86.6k / 주간 다운로드 22,873)
  • 매우 작은 용량 (344kb)

단점

  • vconsole 버튼 워딩 및 스타일 변경이 안됨
  • (아래에 설명할 eruda.js에 비해) 커스터마이징이 어려움 (콘솔창 크기, 투명도, 테마 등)
  • 국내 사용이 많이 않아 관련 도큐 적음 (issue 대부분 글 중국어)

적용 방법

  • 모든 페이지에 적용할 수 있도록 _app.tsx 페이지에 세팅 (component로 분리해서 사용)
  • dev, stage 환경에서만 적용 가능하도록 설정
  • indow 객체를 사용하기 때문에 lazyload 적용
  • 아래는 코드 예시
// _app.tsx

  componentDidMount() {
    ...

    // web console 세팅
    const initVConsole = async () => {
      if (window && process.env.ENV !== 'production') {
        const VConsole = (await import('vconsole')).default;
        const el = document.createElement('div');
        document.body.append(el);

        const config = {
          theme: 'dark',
          target: el,
        };

        const console = new VConsole(config);
        console.setSwitchPosition(20, 20);
      }
    }

    // vConsole 호출
    initVConsole();
    ...
  }

적용 화면 예시

  • 웹 화면 예시


  • 모바일 화면 예시




eruda.js


기능

  • Console: js 로그를 콘솔에서 보여줌
  • Elements: DOM 엘리먼트 확인
  • Network: 요청 상태 보여줌
  • Resources: localStorage, cookie 정보 보여줌.
  • Info: url, user agent 정보 보여줌.
  • Snippets: 자주 사용하는 snippets 추가
  • Sources: Html, js, css 소스 뷰어

플러그인


장점

  • 다양한 기능 및 플러그인 적용 가능
  • 깔끔하고 편리한 UI (드래그 가능한 플로팅 버튼으로 콘솔 창 열고 닫을 수 있음)
  • 원하는 세팅 가능 (콘솔창 사이즈, 투명도, 테마 등)
  • 쉽고 빠른 설치
  • 모바일 / 웹 반응형
  • 주기적인 관리 (마지막 commit 2022/05/20, 한달 간 다운로드 12.6k / 주간 다운로드 2,851)

단점

  • 마지막 릴리즈 2년전
  • 용량이 작지는 않음 (2.38mb)
  • 대체 라이브러리로 vConsole이 있음
  • 개인 레포지토리
  • 관리가 잘 되고 있지 않다는 issue 글들..
  • 국내 도큐 적음

적용 방법

  • 모든 페이지에 적용할 수 있도록 _app.tsx 페이지에 세팅 (component로 분리해서 사용)
  • dev, stage 환경에서만 적용 가능하도록 설정
  • window 객체를 사용하기 때문에 lazyload 적용
  • 아래는 코드 예시
 // _app.tsx

  componentDidMount() {
    ...

    // web console 세팅
    const initEruda = async () => {
      const eruda = (await import('eruda')).default
      if (window && process.env.ENV !== 'production') {
        const el = document.createElement('div');
        document.body.appendChild(el);
        eruda.init({
          container: el,
          tool: ['console', 'elements', 'network', 'resources', 'info', 'snippets', 'sources'],
          useShadowDom: true,
          autoScale: true,
          defaults: {
            displaySize: 50,
            transparency: 1,
            theme: 'Atom One Dark',
          },
        });
      }
    }

    // eruda.js 실행
    initEruda();
    ...
  }

적용 화면 예시

  • 웹 화면 예시


  • 모바일 화면 예시


그 외 웹 콘솔 라이브러리



참고




Profile picture
@김하연
4년차 프론트엔드 개발자 입니다. 사용자 경험 개선, 코드의 재사용성, 읽기 쉬운 코드에 집중하여 개발합니다.
AboutGithub LinkedinResume
Loading script...