create-gaon 0.2.18 → 0.3.0
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/dist/cli.js +22 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.js +16 -0
- package/package.json +10 -2
package/dist/cli.js
CHANGED
|
@@ -10,8 +10,29 @@
|
|
|
10
10
|
* create-gaon@latest 를 받고, 그 dep 인 @gaonjs/cli(정규 릴리스마다 편승 재발행)
|
|
11
11
|
* 가 현행 스캐폴더를 제공한다. 부트스트래퍼 자신은 로직을 담지 않으므로
|
|
12
12
|
* `gaon new` 가 진화해도 이 파일은 그대로다.
|
|
13
|
+
*
|
|
14
|
+
* 결정 314: 파사드(gaonjs) 버전만은 여기서 해석해 넘긴다 — npx 설치 트리엔
|
|
15
|
+
* gaonjs 패키지가 없어 `gaon new` 의 상향 탐색(결정 242)이 fail-loud 로 죽는다.
|
|
16
|
+
* 자기 package.json 의 devDependencies.gaonjs(발행 시 pnpm 이 실 버전으로
|
|
17
|
+
* 재작성)를 `--gaonjs-version` 으로 주입한다.
|
|
13
18
|
*/
|
|
19
|
+
import { readFileSync } from "node:fs";
|
|
20
|
+
import { fileURLToPath } from "node:url";
|
|
14
21
|
import { runCli } from "@gaonjs/cli";
|
|
22
|
+
import { gaonjsVersionSpec } from "./version.js";
|
|
23
|
+
function detectVersionArg() {
|
|
24
|
+
try {
|
|
25
|
+
const pkgPath = fileURLToPath(new URL("../package.json", import.meta.url));
|
|
26
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
27
|
+
const spec = gaonjsVersionSpec(pkg.devDependencies?.gaonjs);
|
|
28
|
+
return spec === undefined ? [] : [`--gaonjs-version=${spec}`];
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// 메타를 못 읽으면 주입 없이 위임 — gaon new 의 기존 감지/fail-loud 안내가 처리한다.
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
15
35
|
// `npm create gaon <name> [opts]` → `gaon new <name> [opts]`.
|
|
16
36
|
// (인자 파싱·--package-manager·--skip-git·help·에러 안내는 전부 gaon new 가 담당)
|
|
17
|
-
|
|
37
|
+
// 주입분을 앞에 둔다 — 사용자가 --gaonjs-version 을 직접 주면 뒤 것이 이긴다.
|
|
38
|
+
runCli(["new", ...detectVersionArg(), ...process.argv.slice(2)]);
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// 결정 314: create-gaon 은 npx 캐시 트리(dep = @gaonjs/cli 뿐)에서 실행되므로
|
|
2
|
+
// `gaon new` 의 파사드 버전 상향 탐색(결정 242)이 반드시 실패한다 — 인접에
|
|
3
|
+
// gaonjs 패키지가 없다. 대신 자기 발행 메타의 devDependencies.gaonjs 를 읽어
|
|
4
|
+
// `--gaonjs-version` 으로 주입한다. 이 값은 워크스페이스에선 `workspace:*` 이고
|
|
5
|
+
// (→ 주입 생략 · 모노레포 상향 탐색이 잡음), 발행 시 pnpm 이 실 버전으로
|
|
6
|
+
// 재작성해 파사드와 같은 wave 로 자동 동기된다(수동 갱신 없음 · 스테일 불가).
|
|
7
|
+
/** devDependencies.gaonjs 원문을 `--gaonjs-version` 스펙으로 정규화한다. 주입 불가면 undefined. */
|
|
8
|
+
export function gaonjsVersionSpec(raw) {
|
|
9
|
+
if (typeof raw !== 'string' || raw === '')
|
|
10
|
+
return undefined;
|
|
11
|
+
// workspace:*·link:·file: 등 비버전 프로토콜 = 개발 트리 — 주입하지 않는다(상향 탐색이 정답).
|
|
12
|
+
if (/^[a-z]+:/.test(raw))
|
|
13
|
+
return undefined;
|
|
14
|
+
// 실 버전(1.21.0)은 파사드 감지와 같은 caret 관례로, 범위(^·~ 등)는 그대로.
|
|
15
|
+
return /^\d/.test(raw) ? `^${raw}` : raw;
|
|
16
|
+
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-gaon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Gaon 프로젝트 스캐폴더 — `npm create gaon <name>` 진입점 (gaon new 위임)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://gaonjs.dev",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://git.nyx-zone.com/gaon/framework.git",
|
|
11
|
+
"directory": "packages/create-gaon"
|
|
12
|
+
},
|
|
8
13
|
"keywords": [
|
|
9
14
|
"gaon",
|
|
10
15
|
"create",
|
|
@@ -24,7 +29,10 @@
|
|
|
24
29
|
"README.md"
|
|
25
30
|
],
|
|
26
31
|
"dependencies": {
|
|
27
|
-
"@gaonjs/cli": "0.
|
|
32
|
+
"@gaonjs/cli": "0.47.0"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"gaonjs": "1.22.0"
|
|
28
36
|
},
|
|
29
37
|
"scripts": {
|
|
30
38
|
"build": "node ../../node_modules/typescript/bin/tsc -p tsconfig.json"
|