-
Notifications
You must be signed in to change notification settings - Fork 0
/
updatePath.js
74 lines (62 loc) · 1.9 KB
/
updatePath.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const fs = require("fs");
const path = require("path");
// 현재 스크립트 파일의 디렉토리를 기준으로 경로 설정
const currentDir = __dirname;
const appDirectory = path.join(currentDir, "app");
const constantFilePath = path.join(
currentDir,
"src",
"constant",
"pathname.ts"
);
// 경로를 상수 이름으로 변환하는 함수
function pathToConstantName(filePath) {
return (
path
.relative(appDirectory, filePath)
.replace(/\/page\.tsx$/, "")
.toUpperCase()
.replace(/\//g, "_")
.replace(/-/g, "_") + "_PATHNAME"
);
}
// 상수 값 생성
function createConstantValue(filePath) {
return (
"/" + path.relative(appDirectory, filePath).replace(/\/page\.tsx$/, "")
);
}
// 디렉토리를 재귀적으로 탐색하는 함수
function traverseDirectory(dir, fileList = []) {
const files = fs.readdirSync(dir);
files.forEach((file) => {
const filePath = path.join(dir, file);
if (fs.statSync(filePath).isDirectory()) {
traverseDirectory(filePath, fileList);
} else if (
file === "page.tsx" &&
// app/page.tsx 제외
filePath !== path.join(appDirectory, "page.tsx")
) {
fileList.push(filePath);
}
});
return fileList;
}
// 모든 page.tsx 파일 찾기
const pageFiles = traverseDirectory(appDirectory);
// 새로운 상수들을 저장할 배열
const newConstants = [];
// 각 page.tsx 파일에 대해 상수 생성
pageFiles.forEach((filePath) => {
const constantName = pathToConstantName(filePath);
const constantValue = createConstantValue(filePath);
newConstants.push(`export const ${constantName} = "${constantValue}";`);
});
// 새로운 상수들 추가
const updatedContent = `${newConstants.join("\n")}\n`;
// 파일에 쓰기
fs.writeFileSync(constantFilePath, updatedContent);
console.log(
`${newConstants.length}개의 상수가 ${constantFilePath}에 업데이트되었습니다.`
);