Files
sam-react-prod/eslint.config.mjs
byeongcheolryu 63f5df7d7d feat: 품목 관리 및 마스터 데이터 관리 시스템 구현
주요 기능:
- 품목 CRUD 기능 (생성, 조회, 수정)
- 품목 마스터 데이터 관리 시스템
- BOM(Bill of Materials) 관리 기능
- 도면 캔버스 기능
- 품목 속성 및 카테고리 관리
- 스크린 인쇄 생산 관리 페이지

기술 개선:
- localStorage SSR 호환성 수정 (9개 useState 초기화)
- Shadcn UI 컴포넌트 추가 (table, tabs, alert, drawer 등)
- DataContext 및 DeveloperModeContext 추가
- API 라우트 구현 (items, master-data)
- 타입 정의 및 유틸리티 함수 추가

빌드 테스트:  성공 (3.1초)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 14:17:52 +09:00

105 lines
2.9 KiB
JavaScript

import js from "@eslint/js";
import nextPlugin from "@next/eslint-plugin-next";
import tseslint from "@typescript-eslint/eslint-plugin";
import tsparser from "@typescript-eslint/parser";
import reactPlugin from "eslint-plugin-react";
import reactHooksPlugin from "eslint-plugin-react-hooks";
const eslintConfig = [
{
ignores: [
".next/**",
"out/**",
"build/**",
"dist/**",
"node_modules/**",
"next-env.d.ts",
"src/components/_unused/**", // Archived unused components
"src/hooks/useCurrentTime.ts", // Demo hook
],
},
js.configs.recommended,
{
files: ["**/*.{js,jsx,mjs}"],
plugins: {
"@next/next": nextPlugin,
"react": reactPlugin,
"react-hooks": reactHooksPlugin,
},
rules: {
...nextPlugin.configs.recommended.rules,
...nextPlugin.configs["core-web-vitals"].rules,
},
},
{
files: ["**/*.{ts,tsx}"],
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
ecmaFeatures: {
jsx: true,
},
},
globals: {
React: "readonly",
console: "readonly",
process: "readonly",
__dirname: "readonly",
__filename: "readonly",
Buffer: "readonly",
localStorage: "readonly",
window: "readonly",
document: "readonly",
HTMLButtonElement: "readonly",
HTMLInputElement: "readonly",
fetch: "readonly",
URL: "readonly",
RequestInit: "readonly",
Response: "readonly",
PageTransitionEvent: "readonly",
setTimeout: "readonly",
clearTimeout: "readonly",
setInterval: "readonly",
clearInterval: "readonly",
alert: "readonly",
confirm: "readonly",
File: "readonly",
FormData: "readonly",
URLSearchParams: "readonly",
HeadersInit: "readonly",
HTMLTableElement: "readonly",
HTMLTableSectionElement: "readonly",
HTMLTableRowElement: "readonly",
HTMLTableCellElement: "readonly",
HTMLTableCaptionElement: "readonly",
HTMLTextAreaElement: "readonly",
HTMLCanvasElement: "readonly",
ImageData: "readonly",
Image: "readonly",
prompt: "readonly",
},
},
plugins: {
"@typescript-eslint": tseslint,
"@next/next": nextPlugin,
"react": reactPlugin,
"react-hooks": reactHooksPlugin,
},
rules: {
...tseslint.configs.recommended.rules,
...nextPlugin.configs.recommended.rules,
...nextPlugin.configs["core-web-vitals"].rules,
"react/react-in-jsx-scope": "off",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-unused-vars": ["error", {
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_"
}],
},
},
];
export default eslintConfig;