{
    "componentChunkName": "component---node-modules-gatsby-theme-primer-wiki-src-templates-tag-query-js",
    "path": "/tags/관찰/",
    "result": {"data":{"site":{"pathPrefix":"","siteMetadata":{"siteUrl":"https://r0k.wiki"}},"allMdx":{"nodes":[{"frontmatter":{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","draft":false},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다\",\n  \"date\": \"2026-09-30T00:00:00.000Z\",\n  \"updated\": \"2026-09-30T00:00:00.000Z\",\n  \"tags\": [\"관찰\", \"설정무시\"],\n  \"target\": \"pnpm\",\n  \"version\": \"pnpm 11\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"package.json\"), \"\\uC758 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"pnpm\"), \" \\uD544\\uB4DC\\uC5D0 \\uC788\\uB358 overrides\\xB7patchedDependencies\\uAC00 pnpm 11\\uC5D0\\uC11C\\uB294 \\uC801\\uC6A9\\uB418\\uC9C0 \\uC54A\\uB294\\uB370, install\\uC740 \\uC131\\uACF5\\uD55C\\uB2E4. 11\\uBD80\\uD130 \\uC124\\uCE58 \\uAD00\\uB828 \\uC124\\uC815\\uC758 \\uC6D0\\uCC9C\\uC774 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"pnpm-workspace.yaml\"), \"\\uB85C \\uC62E\\uACA8\\uC84C\\uAE30 \\uB54C\\uBB38\\uC774\\uB2E4. \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"packageManager\"), \"\\uB9CC \\uC62C\\uB9AC\\uBA74 \\uC774 \\uC0C1\\uD0DC\\uAC00 \\uB418\\uACE0, \\uACF5\\uC2DD \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"pnpm-v10-to-v11\"), \" codemod\\uB97C \\uB3CC\\uB9AC\\uBA74 \\uC62E\\uACA8\\uC9C4\\uB2E4.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\uB9E5\\uB77D\"), \": 4\\uAC1C \\uB808\\uD3EC\\uB97C Node 24\\xB7pnpm 11\\uB85C \\uC62C\\uB9AC\\uB2E4\\uAC00 overrides\\uAC00 \\uC0AC\\uB77C\\uC9C4 \\uCC44 install\\uC774 \\uC131\\uACF5\\uD558\\uB294 \\uAC78 \\uBC1C\\uACAC\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\uCD9C\\uCC98\"), \": pnpm \\uB9C8\\uC774\\uADF8\\uB808\\uC774\\uC158 \\uAC00\\uC774\\uB4DC, 2026-09-23 \\uC5C5\\uADF8\\uB808\\uC774\\uB4DC \\uC791\\uC5C5\")));\n}\n;\nMDXContent.isMDXComponent = true;","fields":{"slug":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/","title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","lastUpdated":"10/4/2026","lastUpdatedAt":"2026-10-04T07:54:32.000Z","gitCreatedAt":"2026-10-04T07:54:32.000Z"}},{"frontmatter":{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","draft":false},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"tsconfig exclude는 extends 시 병합이 아니라 교체다\",\n  \"date\": \"2026-09-30T00:00:00.000Z\",\n  \"updated\": \"2026-09-30T00:00:00.000Z\",\n  \"tags\": [\"관찰\", \"설정무시\"],\n  \"target\": \"tsconfig\",\n  \"version\": \"TypeScript 전 버전\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"tsconfig.build.json\"), \"\\uC774 \\uC790\\uCCB4 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"exclude\"), \" \\uBC30\\uC5F4\\uC744 \\uC815\\uC758\\uD558\\uBA74 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"extends\"), \"\\uD55C \\uBD80\\uBAA8\\uC758 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"exclude\"), \"\\uB97C \\uD1B5\\uC9F8\\uB85C \\uB36E\\uC5B4\\uC4F4\\uB2E4. \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"files\"), \"\\xB7\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"include\"), \"\\xB7\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"exclude\"), \"\\uB294 \\uBC30\\uC5F4 \\uBCD1\\uD569 \\uC5C6\\uC774 \\uC790\\uC2DD \\uAC12\\uC774 \\uC774\\uAE30\\uB294 \\uD544\\uB4DC\\uC774\\uACE0, \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"compilerOptions\"), \"\\uB9CC \\uD0A4 \\uB2E8\\uC704\\uB85C \\uBCD1\\uD569\\uB41C\\uB2E4. \\uBD80\\uBAA8\\uC5D0 \\uB123\\uC740 exclude\\uAC00 \\uD55C \\uBC88\\uB3C4 \\uC801\\uC6A9\\uB41C \\uC801 \\uC5C6\\uC5B4\\uB3C4 \\uC544\\uBB34 \\uACBD\\uACE0\\uAC00 \\uC5C6\\uB2E4.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\uB9E5\\uB77D\"), \": pre-commit tsc\\uAC00 30\\uCD08 \\uAC78\\uB9AC\\uB294 \\uC6D0\\uC778\\uC744 \\uD30C\\uB2E4\\uAC00, 2024-11\\uC5D0 \\uB123\\uC740 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"i18next.d.ts\"), \" exclude\\uAC00 \\uD55C \\uBC88\\uB3C4 \\uC801\\uC6A9\\uB41C \\uC801 \\uC5C6\\uC5C8\\uB2E4\\uB294 \\uAC78 \\uBC1C\\uACAC\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\uCC98\\uC74C\\uC5D4\"), \": i18n \\uD0C0\\uC785\\uC774 \\uBB34\\uAC70\\uC6B4 \\uAC8C \\uBB38\\uC81C\\uB77C\\uACE0 \\uBD24\\uB2E4. \\uC2E4\\uC81C\\uB85C\\uB294 \\uADF8\\uAC78 \\uBE7C\\uB824\\uB358 \\uC124\\uC815\\uC774 \\uC8FD\\uC5B4 \\uC788\\uC5C8\\uB358 \\uAC83\")));\n}\n;\nMDXContent.isMDXComponent = true;","fields":{"slug":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/","title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","lastUpdated":"10/4/2026","lastUpdatedAt":"2026-10-04T07:54:32.000Z","gitCreatedAt":"2026-10-04T07:54:32.000Z"}}]}},"pageContext":{"slug":"/tags/관찰/","tag":"관찰","sidebarItems":[{"title":"","items":[{"title":"Recently Updated","url":"/latest/","collapse":true,"indent":false,"items":[{"title":"10-04: pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"10-04: tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"},{"title":"10-04: cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"09-06: 일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"08-23: 에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"},{"title":"07-27: 자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"07-05: 관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"06-30: 다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"05-24: dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"},{"title":"04-18: SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]}]},{"title":"Tags","items":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"},{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"},{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"관찰","type":"tag","url":"/tags/관찰/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"}]},{"title":"설정무시","type":"tag","url":"/tags/설정무시/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"},{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}]}],"tagsGroups":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"},{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"},{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"관찰","type":"tag","url":"/tags/관찰/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"}]},{"title":"설정무시","type":"tag","url":"/tags/설정무시/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"},{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}]}},
    "staticQueryHashes": ["2320115945","2650345336","3495835395","451533639"]}