๋ฐ˜์‘ํ˜•

Safari ๊ฐœ๋ฐœ์ž ๋„๊ตฌ


๐Ÿ’ก ์•„์ดํฐ ํ™”๋ฉด์ด ์ž ๊ฒจ์žˆ์„ ๋• ์ฝ˜์†”์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

โถ ๋งฅ๋ถ โ‡„ ์•„์ดํฐ USB ์—ฐ๊ฒฐ

โท ์•„์ดํฐ ์„ค์ • → Safari → ๊ณ ๊ธ‰ → <์›น ์†์„ฑ> ์ฒดํฌ

โธ macOS ์‚ฌํŒŒ๋ฆฌ ์„ค์ • → ๊ณ ๊ธ‰ → <๋ฉ”๋‰ด ๋ง‰๋Œ€์—์„œ ๊ฐœ๋ฐœ์ž์šฉ ๋ฉ”๋‰ด ๋ณด๊ธฐ> ์ฒดํฌ

โน macOS ์‚ฌํŒŒ๋ฆฌ ์ƒ๋‹จ ๋ฉ”๋‰ด → ๊ฐœ๋ฐœ์ž์šฉ → ์•„์ดํฐ ๊ธฐ๊ธฐ ์ด๋ฆ„ → ์•„์ดํฐ ์‚ฌํŒŒ๋ฆฌ์— ์—ด๋ ค์žˆ๋Š” ์›น์‚ฌ์ดํŠธ ์„ ํƒ

์›น์‚ฌ์ดํŠธ๋ฅผ ์„ ํƒํ•˜๋ฉด ๋Œ€์‘ํ•˜๋Š” ์ฝ˜์†”์ฐฝ์ด ๋œฌ๋‹ค

โบ macOS ์‚ฌํŒŒ๋ฆฌ ์ฝ˜์†” ์ฐฝ์—์„œ ํ˜„์žฌ ์—ฐ๋™์ค‘์ธ ์›น์‚ฌ์ดํŠธ์˜ ์†์„ฑ ํ™•์ธ

์šฐ์ธก ์•„์ดํฐ ์ด๋ฏธ์ง€๋Š” ์ฐธ๊ณ ๋ฅผ ์œ„ํ•ด ์Šคํฌ๋ฆฐ์ƒทํ•ด์„œ ๋„์–ด๋‘ 

 

iOS Simulator


๐Ÿ’ก Status bar(๋…ธ์น˜ ์˜์—ญ), Nav bar, Tab bar(์ฃผ์†Œ์ฐฝ ์˜์—ญ), Home indicator ๊ฐ™์€ ์•„์ดํฐ UI๋ฅผ ๊ทธ๋Œ€๋กœ ํ‘œํ˜„ํ•˜๋ฏ€๋กœ ์‹ค๋ฌผ ๊ธฐ๊ธฐ๋ฅผ ์ด์šฉํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ๋ณด์ผ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์ •์„ ์™„๋ฃŒํ•œ ํ›„ Xcode ์‹คํ–‰ ์—†์ด ์ŠคํฌํŠธ๋ผ์ดํŠธ์—์„œ Simulator๋ฅผ ๊ฒ€์ƒ‰ํ•œ ํ›„ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โถ ์•ฑ์Šคํ† ์–ด์—์„œ Xcode ์„ค์น˜

โท โŒ˜ , ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์ •์ฐฝ ์ง„์ž… → Platforms → ์›ํ•˜๋Š” ๋ฒ„์ „์˜ iOS Simulator ์„ค์น˜

์ตœ์‹  ๋ฒ„์ „์€ ๊ธฐ๋ณธ ๋‚ด์žฅ๋ผ์žˆ๋‹ค

โธ Xcode ์ƒ๋‹จ ๋ฉ”๋‰ด → Window → Devices and Simulators → ์›ํ•˜๋Š” iOS ๋ฒ„์ „/๊ธฐ๊ธฐ Simulator ์ถ”๊ฐ€

์ขŒ์ธก ํ•˜๋‹จ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์ƒˆ๋กœ์šด Simulator๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค

โน Xcode ์ƒ๋‹จ ๋ฉ”๋‰ด → Xcode → Open Developer Tool → Simulator ํด๋ฆญ

 

โบ Simulator ์ƒ๋‹จ ๋ฉ”๋‰ด → File → Open Simulator → ๊ธฐ๊ธฐ ์„ ํƒ

๊ธฐ๊ธฐ๋ฅผ ์„ ํƒํ•˜๋ฉด ๋˜ ๋‹ค๋ฅธ Simulator๊ฐ€ ์‹คํ–‰๋œ๋‹ค

โป macOS ์‚ฌํŒŒ๋ฆฌ ์„ค์ • → ๊ณ ๊ธ‰ → <๋ฉ”๋‰ด ๋ง‰๋Œ€์—์„œ ๊ฐœ๋ฐœ์ž์šฉ ๋ฉ”๋‰ด ๋ณด๊ธฐ> ์ฒดํฌ

โผ macOS ์‚ฌํŒŒ๋ฆฌ ์ƒ๋‹จ ๋ฉ”๋‰ด → ๊ฐœ๋ฐœ์ž์šฉ → ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ → ์›น์‚ฌ์ดํŠธ ์„ ํƒ (์„ ํƒํ•˜๋ฉด ์ฝ˜์†”์ฐฝ์ด ๋œฌ๋‹ค)

์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์‚ฌํŒŒ๋ฆฌ(์ขŒ์ธก)์— ์—ฐ๋™์ค‘์ธ ์›น์‚ฌ์ดํŠธ์˜ ์ฝ˜์†” ์ฐฝ(์šฐ์ธก)

 

๋ชจ๋ฐ”์ผ ์ฝ˜์†” — Eruda


 

Eruda๋Š” ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ(์•„์ดํฐ ์‚ฌํŒŒ๋ฆฌ ๋“ฑ) ์ฝ˜์†”์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ์š”์†Œ, ๋„คํŠธ์›Œํฌ, ๋ฆฌ์†Œ์Šค ๋“ฑ ํฌ๋กฌ ์ฝ˜์†”๊ณผ ๋น„์Šทํ•œ ์ธํ„ฐํŽ˜์ด์Šค / ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. npm ํŒจํ‚ค์ง€ ํ˜น์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ์ฆ๊ฒจ์ฐพ๊ธฐ์— Eruda ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋“ฑ๋กํ•ด๋‘๋ฉด ๋ณ„๋‹ค๋ฅธ ์„ค์น˜ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

  • Console: Display JavaScript logs.
  • Elements: Check dom state.
  • Network: Show requests status.
  • Resource: Show localStorage, cookie information.
  • Info: Show url, user agent info.
  • Snippets: Include snippets used most often.
  • Sources: HTML, JS, CSS source viewer.

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ• — ์Šคํฌ๋ฆฝํŠธ ๋ฐฉ์‹

๐Ÿ’ก </body> ์ „์— ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด DOM ํŒŒ์‹ฑ์„ ์™„๋ฃŒํ•œ ํ›„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œ/์‹คํ–‰ํ•œ๋‹ค. defer ์†์„ฑ์„ ๋ช…์‹œํ•˜์ง€ ์•Š์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ </head> ์ „์— ์‚ฝ์ž…ํ•˜๋ฉด <script> ์ฝ”๋“œ๋ฅผ ๋งŒ๋‚˜๋Š” ์ˆœ๊ฐ„ DOM ํŒŒ์‹ฑ์„ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œ/์‹คํ–‰ํ•œ๋‹ค(์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์™„๋ฃŒ ํ›„ DOM ํŒŒ์‹ฑ ์žฌ๊ฐœ).

 

React

๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์˜ˆ์‹œ ์ฝ”๋“œ. </head> ํƒœ๊ทธ ์ „์— ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— defer ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์„œ DOM ํŒŒ์‹ฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. ๊ทธ๋Ÿผ DOM ํŒŒ์‹ฑ์ด ์ด๋ค„์งˆ ๋•Œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , DOM ํŒŒ์‹ฑ์„ ์™„๋ฃŒํ•œ ์‹œ์ ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

<!-- public/index.html — </body> ์ „์— ์‚ฝ์ž…ํ•  ๋•Œ -->
<body>
  <!-- ์ƒ๋žต -->
  <script src="//cdn.jsdelivr.net/npm/eruda" onload="eruda.init()"></script>
</body>
<!-- public/index.html — </head> ์ „์— ์‚ฝ์ž…ํ•  ๋•Œ -->
<head>
  <!-- ์ƒ๋žต -->
  <script
    defer
    src="//cdn.jsdelivr.net/npm/eruda"
    onload="eruda.init()"
  ></script>
</head>

 

์ฃผ์†Œ์ฐฝ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง key/value๊ฐ€ ?eruda=true ์ผ ๋•Œ๋งŒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

<!-- public/index.html -->
<body>
  <!-- ... -->
  <script>
    (function () {
      const isErudaActive = /eruda=true/.test(window.location) || localStorage.getItem('active-eruda') === 'true';
      if (!isErudaActive) return;

      const script = document.createElement('script');
      script.src = '//cdn.jsdelivr.net/npm/eruda';
      
      script.onload = () => eruda.init();
      document.body.append(script);
    })();
  </script>
</body>

 

Next.js

์ „์ฒด ํŽ˜์ด์ง€์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด _app.tsx ํŒŒ์ผ์—, ํŠน์ • ํŽ˜์ด์ง€์—์„œ๋งŒ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

// _app.tsx
import Script from 'next/script';

export default function App() {
  // ...
  return (
    <>
      {/* ... */}
      <Script
        src="//cdn.jsdelivr.net/npm/eruda"
        onLoad={() => window.eruda?.init()}
      />
    </>
  );
}

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์—ญ ๊ฐ์ฒด์—์„œ eruda๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋ฏ€๋กœ, ์ „์—ญ ๊ฐ์ฒด ํƒ€์ž…์— eruda๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. init ๋ฉ”์„œ๋“œ ์ธ์ž์— ์˜ต์…˜์„ ๋„ฃ๋Š”๋‹ค๋ฉด InitOptions ์˜ต์…˜ ํƒ€์ž…๋„ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค(์ „์ฒด ํƒ€์ž… ์ •์˜).

// global.d.ts
declare global {
  interface Window {
    eruda?: { init: () => void }; // ์ „์—ญ ๊ฐ์ฒด์— eruda ํƒ€์ž… ์ถ”๊ฐ€
  }
}

export {};

 

ErudaScript ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ชจ๋ฐ”์ผ / ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋“ฑ์˜ ์‹คํ–‰ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

// ErudaScript.tsx
const ErudaScript = () => {
  if (
    typeof window === 'undefined' ||
    process.env.NODE_ENV === 'production' ||
    !isMobile // "react-device-detect" ํŒจํ‚ค์ง€
  )
    return null;

  return (
    <Script
      src="//cdn.jsdelivr.net/npm/eruda"
      onLoad={() => window.eruda?.init()}
    />
  );
};

 

์ฐธ๊ณ ๋กœ Next.js Script ์ปดํฌ๋„ŒํŠธ์˜ strategy ์†์„ฑ์„ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด afterInteractive ์„ค์ •์ด ๊ธฐ๋ณธ ์ ์šฉ๋œ๋‹ค. ์ฐจ์ด์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ .

 

  • afterInteractive (๊ธฐ๋ณธ๊ฐ’)
    • ์‚ฝ์ž… ์œ„์น˜ : </body> ์ด์ „ (ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฝ์ž…)
    • ์‹คํ–‰ ์‹œ์  : ํ•˜์ด๋“œ๋ ˆ์ด์…˜ ์ดํ›„
    • ์šฉ๋„ : ํƒœ๊ทธ ๋งค๋‹ˆ์ €, ์• ๋„๋ฆฌํ‹ฑ์Šค ๋“ฑ
  • beforeInteractive
    • ์‚ฝ์ž… ์œ„์น˜ : </head> ์ด์ „ (์„œ๋ฒ„์—์„œ ๋ฏธ๋ฆฌ ์‚ฝ์ž…)
    • ์‹คํ–‰ ์‹œ์  : ํ•˜์ด๋“œ๋ ˆ์ด์…˜ ์ด์ „ (์„œ๋ฒ„์—์„œ ์ดˆ๊ธฐ HTML์— ์ฃผ์ž…๋œ ํ›„ Next.js ๋ชจ๋“ˆ๋ณด๋‹ค ๋จผ์ € ๋‹ค์šด๋กœ๋“œ)
    • ์šฉ๋„ : ์ฟ ํ‚ค ๋™์˜ ์•Œ๋ฆผ, ๋ด‡ ํƒ์ง€๊ธฐ ๋“ฑ

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ• — npm ํŒจํ‚ค์ง€ ๋ฐฉ์‹

๐Ÿ’ก ์ฐธ๊ณ  ๋‚ด์šฉ

  • ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ์‹คํ–‰ : ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ˜ธ์ถœ e.g. App.tsx(React), _app.tsx(Next.js)
  • ํŠน์ • ํŽ˜์ด์ง€์—์„œ ์‹คํ–‰ : ํ•ด๋‹น ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ˜ธ์ถœ

 

React

useEruda ์ปค์Šคํ…€ ํ›…์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ โ–ผ

// useEruda.ts
import eruda from 'eruda';

const useEruda = () => {
  useEffect(() => {
    eruda.init();
    return () => eruda.destroy(); // ์–ธ๋งˆ์šดํŠธ์‹œ eruda ์ธ์Šคํ„ด์Šค ์ œ๊ฑฐ
  }, []);
};
// App.tsx
// ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ์‹คํ–‰
function App() {
  useEruda();
  // ...
}

 

Next.js

๐Ÿ’ก import(module) ๊ตฌ๋ฌธ์€ ๋ชจ๋“ˆ์ด ๋‚ด๋ณด๋‚ธ ๊ฐ์ฒด๋ฅผ ๋‹ด์€ ์ดํ–‰๋œ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

Next.js์—์„œ eruda ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋ฉด self is not defined ๋ ˆํผ๋Ÿฐ์Šค ์—๋Ÿฌ๋ฅผ ๋ฟœ๋Š”๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‹ค์ด๋‚˜๋ฏน import ๋ฐฉ์‹์„ ํ™œ์šฉํ•ด์„œ ref ๊ฐ์ฒด์— ๋‹ด์•„๋‘๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

// useEruda.ts
import { Eruda } from 'eruda';

const useEruda = () => {
  const instance = useRef<Eruda | null>(null);

  useEffect(() => {
    if (!instance.current) {
      import('eruda').then((module) => {
        // default export ๋ชจ๋“ˆ์€ default ํ”„๋กœํผํ‹ฐ๋กœ ์ฝ๋Š”๋‹ค
        instance.current = module.default;
        instance.current.init();
      });
    }
  }, []);

  useEffect(() => {
    return () => instance.current?.destroy();
  }, []);
};
// _app.tsx
// ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ์‹คํ–‰
function App({ Component, pageProps }: AppProps) {
  useEruda();
  // ...
  return <Component {...pageProps} />;
}

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ• — ๋ถ๋งˆํฌ ๋ฐฉ์‹ โญ๏ธ

์•„๋ž˜ ์ฃผ์†Œ๋กœ ์‚ฌํŒŒ๋ฆฌ๋‚˜ ํฌ๋กฌ ์ฆ๊ฒจ์ฐพ๊ธฐ์— ์ถ”๊ฐ€ํ•ด๋‘๋ฉด ์–ด๋–ค ์‚ฌ์ดํŠธ / ํŽ˜์ด์ง€์—์„œ๋“  ๋ชจ๋ฐ”์ผ ์ฝ˜์†”์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋กœ ์„ค์น˜ํ•  ํ•„์š” ์—†์œผ๋ฏ€๋กœ ๊ฐ€์žฅ ํŽธ๋ฆฌํ•œ ๋ฐฉ์‹(์ถ”์ฒœ).

javascript: (function () {
  const script = document.createElement('script');
  script.src = '//cdn.jsdelivr.net/npm/eruda';
  document.body.appendChild(script);
  script.onload = () => eruda.init();
})();

 

์˜ต์…˜

์ฝ˜์†” ํŒจ๋„์ด ๋ถ™์„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ์ฝ˜์†” ์ฐฝ์— ์–ด๋–ค ํƒญ(Tool)์„ ํฌํ•จํ• ์ง€ ์ง์ ‘ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์™ธ์—๋„ ํˆฌ๋ช…๋„ / ์‚ฌ์ด์ฆˆ / ํ…Œ๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , show(), hide() ๋ฉ”์„œ๋“œ๋กœ ์ฝ˜์†” ํŒจ๋„ ํ‘œ์‹œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๋ฌธ์„œ ์ฐธ๊ณ .

์ด๋ฆ„ ํƒ€์ž… ์„ค๋ช…
container element ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด HTML ๋ฃจํŠธ ์š”์†Œ ์•„๋ž˜์— ์ถ”๊ฐ€๋จ
tool string, array ๊ธฐ๋ณธ ๋„๊ตฌ ์„ ํƒ. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๋„๊ตฌ๊ฐ€ ์ถ”๊ฐ€๋จ
autoScale=true boolean ๋‹ค์–‘ํ•œ ๋ทฐํฌํŠธ ์„ค์ •์— ๋งž์ถฐ eruda๋ฅผ ์ž๋™์œผ๋กœ ์Šค์ผ€์ผ๋งํ• ์ง€ ์—ฌ๋ถ€
useShadowDom=true boolean CSS ์บก์Šํ™”๋ฅผ ์œ„ํ•ด Shadow DOM ์‚ฌ์šฉ ์—ฌ๋ถ€
defaults object ๊ธฐ๋ณธ ์„ค์ •
defaults.transparency number 0~1 ์‚ฌ์ด ํˆฌ๋ช…๋„
defaults.displaySize number 0~100 ์‚ฌ์ด ํ‘œ์‹œ ํฌ๊ธฐ
defaults.theme string ํ…Œ๋งˆ ์„ค์ •. ๊ธฐ๋ณธ๊ฐ’์€ ๋ผ์ดํŠธ ํ˜น์€ ๋‹คํฌ ๋ชจ๋“œ์—์„  ๋‹คํฌ
// eruda.init() ์˜ต์…˜ ์˜ˆ์‹œ via ๊ณต์‹ ๋ฌธ์„œ
const el = document.createElement('div');
document.body.appendChild(el);

eruda.init({
  container: el, // eruda ํŒจ๋„์„ el ์—˜๋ฆฌ๋จผํŠธ์— append
  tool: ['console', 'elements'], // console, elements ํƒญ๋งŒ ํ‘œ์‹œ
  useShadowDom: true, // #Shadow Dom ์‚ฌ์šฉ
  autoScale: true, // ์ž๋™ ์Šค์ผ€์ผ
  defaults: {
    displaySize: 50, // ๋†’์ด 50%
    transparency: 0.9, // ํˆฌ๋ช…๋„
    theme: 'Atom One Dark', // ํ…Œ๋งˆ
  },
});

 

๋ ˆํผ๋Ÿฐ์Šค


 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•