운영 시작 버전 v1.0.0 정리

This commit is contained in:
2026-05-14 10:49:25 +09:00
parent 069d1bfbd4
commit 3b331b8fe6
18 changed files with 1679 additions and 94 deletions

View File

@@ -0,0 +1,72 @@
import { readdirSync, statSync } from 'node:fs'
import { join, relative } from 'node:path'
import { spawnSync } from 'node:child_process'
const ignoredDirectories = new Set([
'.git',
'.nuxt',
'.output',
'node_modules'
])
const checkedExtensions = new Set(['.js', '.mjs', '.cjs'])
/**
* 점검 대상 JavaScript 파일인지 확인한다.
* @param {string} filePath - 파일 경로
* @returns {boolean} 점검 대상 여부
*/
const isCheckedFile = (filePath) => {
const extension = filePath.slice(filePath.lastIndexOf('.'))
return checkedExtensions.has(extension)
}
/**
* 디렉터리에서 JavaScript 파일 목록을 재귀적으로 수집한다.
* @param {string} directory - 탐색할 디렉터리
* @returns {string[]} JavaScript 파일 경로 목록
*/
const collectJavaScriptFiles = (directory) => {
const entries = readdirSync(directory)
const files = []
for (const entry of entries) {
if (ignoredDirectories.has(entry)) {
continue
}
const fullPath = join(directory, entry)
const stat = statSync(fullPath)
if (stat.isDirectory()) {
files.push(...collectJavaScriptFiles(fullPath))
continue
}
if (stat.isFile() && isCheckedFile(fullPath)) {
files.push(fullPath)
}
}
return files
}
const rootDirectory = process.cwd()
const files = collectJavaScriptFiles(rootDirectory)
for (const file of files) {
const result = spawnSync(process.execPath, ['--check', file], {
encoding: 'utf8'
})
if (result.status !== 0) {
const displayPath = relative(rootDirectory, file)
process.stderr.write(`JavaScript 문법 오류: ${displayPath}\n`)
if (result.stderr) {
process.stderr.write(result.stderr)
}
process.exit(result.status || 1)
}
}
process.stdout.write(`JavaScript 문법 점검 완료: ${files.length}개 파일\n`)