tylersong 1.0.14 โ 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/lib/sanity.d.ts +1 -1
- package/dist/lib/sanity.js +46 -62
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,6 +46,23 @@
|
|
|
46
46
|
npx tylersong
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
### ๐ง ํ๊ฒฝ ๋ณ์ ์ค์ (์ ํ์ฌํญ)
|
|
50
|
+
|
|
51
|
+
๋ ์์ธํ ๊ฒฝ๋ ฅ ์ ๋ณด์ ํฌํธํด๋ฆฌ์ค ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด Sanity CMS ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ธ์:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# ํ๊ฒฝ ๋ณ์ ์ค์
|
|
55
|
+
export SANITY_PROJECT_ID='your-project-id'
|
|
56
|
+
export SANITY_DATASET='production'
|
|
57
|
+
export SANITY_API_VERSION='2025-12-06'
|
|
58
|
+
export SANITY_API_TOKEN='your-token' # ์ ํ์ฌํญ, ์ฝ๊ธฐ ์ ์ฉ ๊ถ์ฅ
|
|
59
|
+
|
|
60
|
+
# ์คํ
|
|
61
|
+
npx tylersong
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
> **์ฐธ๊ณ **: ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ง ์์๋ ๊ธฐ๋ณธ ํ๋กํ ์ ๋ณด๋ ์ ์์ ์ผ๋ก ํ์๋ฉ๋๋ค.
|
|
65
|
+
|
|
49
66
|
### ๐ฆ ์ ์ญ ์ค์น
|
|
50
67
|
|
|
51
68
|
์์ฃผ ์ฌ์ฉํ๋ค๋ฉด ์ ์ญ์ผ๋ก ์ค์นํ์ธ์:
|
package/dist/lib/sanity.d.ts
CHANGED
|
@@ -22,5 +22,5 @@ export declare const getPortfolio: (name: string | undefined) => Promise<Portfol
|
|
|
22
22
|
/**
|
|
23
23
|
* Sanity ํด๋ผ์ด์ธํธ ์ธ์คํด์ค๋ฅผ ๋ฐํํฉ๋๋ค (ํ์ํ ๊ฒฝ์ฐ)
|
|
24
24
|
*/
|
|
25
|
-
export declare const getSanityClient: () => ReturnType<typeof createClient
|
|
25
|
+
export declare const getSanityClient: () => ReturnType<typeof createClient> | null;
|
|
26
26
|
//# sourceMappingURL=sanity.d.ts.map
|
package/dist/lib/sanity.js
CHANGED
|
@@ -1,72 +1,33 @@
|
|
|
1
1
|
import { createClient } from "@sanity/client";
|
|
2
|
-
import { readFileSync } from "fs";
|
|
3
|
-
import { join, dirname } from "path";
|
|
4
|
-
import { fileURLToPath } from "url";
|
|
5
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
-
const __dirname = dirname(__filename);
|
|
7
2
|
/**
|
|
8
|
-
*
|
|
3
|
+
* ํ๊ฒฝ ๋ณ์์์ Sanity ์ค์ ์ ๋ก๋ํฉ๋๋ค
|
|
4
|
+
* npm ํจํค์ง์์๋ process.env์์๋ง ์ฝ์ต๋๋ค
|
|
5
|
+
* ํ๊ฒฝ ๋ณ์๊ฐ ์์ผ๋ฉด null์ ๋ฐํํฉ๋๋ค
|
|
9
6
|
*/
|
|
10
7
|
const loadEnvConfig = () => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (trimmedLine && !trimmedLine.startsWith("#")) {
|
|
18
|
-
const [key, ...valueParts] = trimmedLine.split("=");
|
|
19
|
-
const value = valueParts.join("=").replace(/^["']|["']$/g, "");
|
|
20
|
-
switch (key.trim()) {
|
|
21
|
-
case "SANITY_PROJECT_ID":
|
|
22
|
-
config.projectId = value;
|
|
23
|
-
break;
|
|
24
|
-
case "SANITY_DATASET":
|
|
25
|
-
config.dataset = value;
|
|
26
|
-
break;
|
|
27
|
-
case "SANITY_API_VERSION":
|
|
28
|
-
config.apiVersion = value;
|
|
29
|
-
break;
|
|
30
|
-
case "SANITY_API_TOKEN":
|
|
31
|
-
config.token = value;
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
if (!config.projectId || !config.dataset || !config.apiVersion) {
|
|
37
|
-
throw new Error("ํ์ Sanity ํ๊ฒฝ ๋ณ์๊ฐ ๋๋ฝ๋์์ต๋๋ค: SANITY_PROJECT_ID, SANITY_DATASET, SANITY_API_VERSION");
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
projectId: config.projectId,
|
|
41
|
-
dataset: config.dataset,
|
|
42
|
-
apiVersion: config.apiVersion,
|
|
43
|
-
token: config.token,
|
|
44
|
-
useCdn: false, // ์ฝ๊ธฐ ์ ์ฉ์ด๋ฏ๋ก CDN ์ฌ์ฉ ์ ํจ
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
// .env ํ์ผ์ด ์๊ฑฐ๋ ์ฝ์ ์ ์๋ ๊ฒฝ์ฐ process.env์์ ์๋
|
|
49
|
-
const projectId = process.env.SANITY_PROJECT_ID;
|
|
50
|
-
const dataset = process.env.SANITY_DATASET;
|
|
51
|
-
const apiVersion = process.env.SANITY_API_VERSION;
|
|
52
|
-
const token = process.env.SANITY_API_TOKEN;
|
|
53
|
-
if (!projectId || !dataset || !apiVersion) {
|
|
54
|
-
throw new Error("Sanity ํ๊ฒฝ ๋ณ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. .env ํ์ผ์ ํ์ธํด์ฃผ์ธ์.");
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
projectId,
|
|
58
|
-
dataset,
|
|
59
|
-
apiVersion,
|
|
60
|
-
token,
|
|
61
|
-
useCdn: false,
|
|
62
|
-
};
|
|
8
|
+
const projectId = process.env.SANITY_PROJECT_ID;
|
|
9
|
+
const dataset = process.env.SANITY_DATASET;
|
|
10
|
+
const apiVersion = process.env.SANITY_API_VERSION;
|
|
11
|
+
const token = process.env.SANITY_API_TOKEN;
|
|
12
|
+
if (!projectId || !dataset || !apiVersion) {
|
|
13
|
+
return null;
|
|
63
14
|
}
|
|
15
|
+
return {
|
|
16
|
+
projectId,
|
|
17
|
+
dataset,
|
|
18
|
+
apiVersion,
|
|
19
|
+
token,
|
|
20
|
+
useCdn: false, // ์ฝ๊ธฐ ์ ์ฉ์ด๋ฏ๋ก CDN ์ฌ์ฉ ์ ํจ
|
|
21
|
+
};
|
|
64
22
|
};
|
|
65
23
|
/**
|
|
66
24
|
* Sanity ํด๋ผ์ด์ธํธ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค
|
|
67
25
|
*/
|
|
68
26
|
const createSanityClient = () => {
|
|
69
27
|
const config = loadEnvConfig();
|
|
28
|
+
if (!config) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
70
31
|
return createClient({
|
|
71
32
|
projectId: config.projectId,
|
|
72
33
|
dataset: config.dataset,
|
|
@@ -75,13 +36,26 @@ const createSanityClient = () => {
|
|
|
75
36
|
useCdn: config.useCdn,
|
|
76
37
|
});
|
|
77
38
|
};
|
|
78
|
-
// Sanity ํด๋ผ์ด์ธํธ ์ธ์คํด์ค
|
|
79
|
-
|
|
39
|
+
// Sanity ํด๋ผ์ด์ธํธ ์ธ์คํด์ค (์ง์ฐ ์ด๊ธฐํ)
|
|
40
|
+
let client = null;
|
|
41
|
+
/**
|
|
42
|
+
* Sanity ํด๋ผ์ด์ธํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค (์ง์ฐ ์ด๊ธฐํ)
|
|
43
|
+
*/
|
|
44
|
+
const getClient = () => {
|
|
45
|
+
if (client === null) {
|
|
46
|
+
client = createSanityClient();
|
|
47
|
+
}
|
|
48
|
+
return client;
|
|
49
|
+
};
|
|
80
50
|
/**
|
|
81
51
|
* ๋ชจ๋ Experience(๊ฒฝ๋ ฅ) ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค
|
|
82
52
|
*/
|
|
83
53
|
export const getExperiences = async () => {
|
|
84
54
|
try {
|
|
55
|
+
const client = getClient();
|
|
56
|
+
if (!client) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
85
59
|
const query = `*[_type == "experience"] | order(startDate asc) {
|
|
86
60
|
_id,
|
|
87
61
|
company,
|
|
@@ -104,6 +78,10 @@ export const getExperiences = async () => {
|
|
|
104
78
|
*/
|
|
105
79
|
export const getExperienceById = async (id) => {
|
|
106
80
|
try {
|
|
81
|
+
const client = getClient();
|
|
82
|
+
if (!client) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
107
85
|
const query = `*[_type == "experience" && _id == $id][0] {
|
|
108
86
|
_id,
|
|
109
87
|
company,
|
|
@@ -114,7 +92,9 @@ export const getExperienceById = async (id) => {
|
|
|
114
92
|
technologies,
|
|
115
93
|
location
|
|
116
94
|
}`;
|
|
117
|
-
const experience = await client.fetch(query, {
|
|
95
|
+
const experience = await client.fetch(query, {
|
|
96
|
+
id,
|
|
97
|
+
});
|
|
118
98
|
return experience;
|
|
119
99
|
}
|
|
120
100
|
catch (error) {
|
|
@@ -123,6 +103,10 @@ export const getExperienceById = async (id) => {
|
|
|
123
103
|
};
|
|
124
104
|
export const getPortfolio = async (name) => {
|
|
125
105
|
try {
|
|
106
|
+
const client = getClient();
|
|
107
|
+
if (!client) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
126
110
|
// name์ด ์ ๊ณต๋ ๊ฒฝ์ฐ author์ name๊ณผ ์ผ์นํ๋ portfolio๋ง ์กฐํ
|
|
127
111
|
const query = `*[_type == "portfolio" && author->name == $name][0] {
|
|
128
112
|
"author": author-> {
|
|
@@ -142,5 +126,5 @@ export const getPortfolio = async (name) => {
|
|
|
142
126
|
/**
|
|
143
127
|
* Sanity ํด๋ผ์ด์ธํธ ์ธ์คํด์ค๋ฅผ ๋ฐํํฉ๋๋ค (ํ์ํ ๊ฒฝ์ฐ)
|
|
144
128
|
*/
|
|
145
|
-
export const getSanityClient = () =>
|
|
129
|
+
export const getSanityClient = () => getClient();
|
|
146
130
|
//# sourceMappingURL=sanity.js.map
|