운영 시작 버전 v1.0.0 정리
This commit is contained in:
72
scripts/check-js-syntax.js
Normal file
72
scripts/check-js-syntax.js
Normal 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`)
|
||||
Reference in New Issue
Block a user