@simplysm/sd-cli 12.15.62 → 12.15.64
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.
|
@@ -86,6 +86,27 @@ export class SdCliProject {
|
|
|
86
86
|
const logger = SdLogger.get(["simplysm", "sd-cli", "SdCliProject", "publishAsync"]);
|
|
87
87
|
logger.debug("프로젝트 설정 가져오기...");
|
|
88
88
|
const projConf = await loadProjConfAsync(process.cwd(), false, opt);
|
|
89
|
+
if (Object.values(projConf.packages).some((item) => item?.publish === "npm")) {
|
|
90
|
+
logger.debug("npm/yarn 토큰 유효성 체크...");
|
|
91
|
+
try {
|
|
92
|
+
const npmWhoami = await SdProcess.spawnAsync("npm", ["whoami"]);
|
|
93
|
+
if (StringUtils.isNullOrEmpty(npmWhoami.trim())) {
|
|
94
|
+
throw new Error();
|
|
95
|
+
}
|
|
96
|
+
logger.debug(`npm 로그인 확인: ${npmWhoami.trim()}`);
|
|
97
|
+
const yarnWhoami = await SdProcess.spawnAsync("yarn", ["npm", "whoami"]);
|
|
98
|
+
if (StringUtils.isNullOrEmpty(yarnWhoami.trim())) {
|
|
99
|
+
throw new Error();
|
|
100
|
+
}
|
|
101
|
+
logger.debug(`yarn 로그인 확인: ${yarnWhoami.trim()}`);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
throw new Error("npm 토큰이 유효하지 않거나 만료되었습니다.\n" +
|
|
105
|
+
"https://www.npmjs.com/settings/~/tokens 에서 Granular Access Token 생성 후:\n" +
|
|
106
|
+
" npm config set //registry.npmjs.org/:_authToken <토큰>\n" +
|
|
107
|
+
" yarn config set npmAuthToken <토큰> --home");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
89
110
|
logger.debug("프로젝트 package.json 가져오기...");
|
|
90
111
|
const projNpmConf = FsUtils.readJson(path.resolve(process.cwd(), "package.json"));
|
|
91
112
|
if (opt.noBuild) {
|
|
@@ -232,27 +232,33 @@ export class SdProjectBuildRunner {
|
|
|
232
232
|
return new Set([...workspacePaths, ...localUpdatePaths].map((item) => PathUtils.norm(item)));
|
|
233
233
|
}
|
|
234
234
|
static async _restartServerAsync(prevWorker, pkgPath, pkgConfOrPort) {
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
try {
|
|
236
|
+
if (prevWorker) {
|
|
237
|
+
await prevWorker.killAsync();
|
|
238
|
+
}
|
|
239
|
+
const npmConf = FsUtils.readJson(path.resolve(pkgPath, "package.json"));
|
|
240
|
+
const worker = new SdWorker(import.meta.resolve("../workers/server.worker"), {
|
|
241
|
+
env: {
|
|
242
|
+
NODE_ENV: "development",
|
|
243
|
+
TZ: "Asia/Seoul",
|
|
244
|
+
SD_VERSION: npmConf.version,
|
|
245
|
+
...(typeof pkgConfOrPort === "number" ? {} : pkgConfOrPort.env),
|
|
246
|
+
},
|
|
247
|
+
resourceLimits: {
|
|
248
|
+
maxOldGenerationSizeMb: 2048,
|
|
249
|
+
maxYoungGenerationSizeMb: 8,
|
|
250
|
+
stackSizeMb: 2,
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
const port = await worker.run("listen", [
|
|
254
|
+
typeof pkgConfOrPort === "number" ? pkgConfOrPort : pkgPath,
|
|
255
|
+
]);
|
|
256
|
+
this._logger.debug("서버가 시작되었습니다.");
|
|
257
|
+
return { worker, port };
|
|
258
|
+
}
|
|
259
|
+
catch (err) {
|
|
260
|
+
this._logger.error("서버 재시작 실패: ", err);
|
|
261
|
+
return {};
|
|
237
262
|
}
|
|
238
|
-
const npmConf = FsUtils.readJson(path.resolve(pkgPath, "package.json"));
|
|
239
|
-
const worker = new SdWorker(import.meta.resolve("../workers/server.worker"), {
|
|
240
|
-
env: {
|
|
241
|
-
NODE_ENV: "development",
|
|
242
|
-
TZ: "Asia/Seoul",
|
|
243
|
-
SD_VERSION: npmConf.version,
|
|
244
|
-
...(typeof pkgConfOrPort === "number" ? {} : pkgConfOrPort.env),
|
|
245
|
-
},
|
|
246
|
-
resourceLimits: {
|
|
247
|
-
maxOldGenerationSizeMb: 2048,
|
|
248
|
-
maxYoungGenerationSizeMb: 8,
|
|
249
|
-
stackSizeMb: 2,
|
|
250
|
-
},
|
|
251
|
-
});
|
|
252
|
-
const port = await worker.run("listen", [
|
|
253
|
-
typeof pkgConfOrPort === "number" ? pkgConfOrPort : pkgPath,
|
|
254
|
-
]);
|
|
255
|
-
this._logger.debug("서버가 시작되었습니다.");
|
|
256
|
-
return { worker, port };
|
|
257
263
|
}
|
|
258
264
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/sd-cli",
|
|
3
|
-
"version": "12.15.
|
|
3
|
+
"version": "12.15.64",
|
|
4
4
|
"description": "심플리즘 패키지 - CLI",
|
|
5
5
|
"author": "김석래",
|
|
6
6
|
"repository": {
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"@angular/compiler-cli": "^20.3.15",
|
|
18
18
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
19
19
|
"@electron/rebuild": "^4.0.2",
|
|
20
|
-
"@simplysm/sd-core-common": "12.15.
|
|
21
|
-
"@simplysm/sd-core-node": "12.15.
|
|
22
|
-
"@simplysm/sd-service-server": "12.15.
|
|
23
|
-
"@simplysm/sd-storage": "12.15.
|
|
20
|
+
"@simplysm/sd-core-common": "12.15.64",
|
|
21
|
+
"@simplysm/sd-core-node": "12.15.64",
|
|
22
|
+
"@simplysm/sd-service-server": "12.15.64",
|
|
23
|
+
"@simplysm/sd-storage": "12.15.64",
|
|
24
24
|
"browserslist": "^4.28.1",
|
|
25
25
|
"cordova": "^13.0.0",
|
|
26
26
|
"electron": "^33.4.11",
|
|
@@ -133,6 +133,30 @@ export class SdCliProject {
|
|
|
133
133
|
logger.debug("프로젝트 설정 가져오기...");
|
|
134
134
|
const projConf = await loadProjConfAsync(process.cwd(), false, opt);
|
|
135
135
|
|
|
136
|
+
if (Object.values(projConf.packages).some((item) => item?.publish === "npm")) {
|
|
137
|
+
logger.debug("npm/yarn 토큰 유효성 체크...");
|
|
138
|
+
try {
|
|
139
|
+
const npmWhoami = await SdProcess.spawnAsync("npm", ["whoami"]);
|
|
140
|
+
if (StringUtils.isNullOrEmpty(npmWhoami.trim())) {
|
|
141
|
+
throw new Error();
|
|
142
|
+
}
|
|
143
|
+
logger.debug(`npm 로그인 확인: ${npmWhoami.trim()}`);
|
|
144
|
+
|
|
145
|
+
const yarnWhoami = await SdProcess.spawnAsync("yarn", ["npm", "whoami"]);
|
|
146
|
+
if (StringUtils.isNullOrEmpty(yarnWhoami.trim())) {
|
|
147
|
+
throw new Error();
|
|
148
|
+
}
|
|
149
|
+
logger.debug(`yarn 로그인 확인: ${yarnWhoami.trim()}`);
|
|
150
|
+
} catch {
|
|
151
|
+
throw new Error(
|
|
152
|
+
"npm 토큰이 유효하지 않거나 만료되었습니다.\n" +
|
|
153
|
+
"https://www.npmjs.com/settings/~/tokens 에서 Granular Access Token 생성 후:\n" +
|
|
154
|
+
" npm config set //registry.npmjs.org/:_authToken <토큰>\n" +
|
|
155
|
+
" yarn config set npmAuthToken <토큰> --home",
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
136
160
|
logger.debug("프로젝트 package.json 가져오기...");
|
|
137
161
|
const projNpmConf = FsUtils.readJson(path.resolve(process.cwd(), "package.json")) as INpmConfig;
|
|
138
162
|
|
|
@@ -358,36 +358,41 @@ export class SdProjectBuildRunner {
|
|
|
358
358
|
pkgPath: string,
|
|
359
359
|
pkgConfOrPort: ISdServerPackageConfig | number,
|
|
360
360
|
): Promise<{
|
|
361
|
-
worker
|
|
362
|
-
port
|
|
361
|
+
worker?: SdWorker<IServerWorkerType>;
|
|
362
|
+
port?: number;
|
|
363
363
|
}> {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
364
|
+
try {
|
|
365
|
+
if (prevWorker) {
|
|
366
|
+
await prevWorker.killAsync();
|
|
367
|
+
}
|
|
367
368
|
|
|
368
|
-
|
|
369
|
+
const npmConf = FsUtils.readJson(path.resolve(pkgPath, "package.json")) as INpmConfig;
|
|
369
370
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
371
|
+
const worker = new SdWorker<IServerWorkerType>(
|
|
372
|
+
import.meta.resolve("../workers/server.worker"),
|
|
373
|
+
{
|
|
374
|
+
env: {
|
|
375
|
+
NODE_ENV: "development",
|
|
376
|
+
TZ: "Asia/Seoul",
|
|
377
|
+
SD_VERSION: npmConf.version,
|
|
378
|
+
...(typeof pkgConfOrPort === "number" ? {} : pkgConfOrPort.env),
|
|
379
|
+
},
|
|
380
|
+
resourceLimits: {
|
|
381
|
+
maxOldGenerationSizeMb: 2048,
|
|
382
|
+
maxYoungGenerationSizeMb: 8,
|
|
383
|
+
stackSizeMb: 2,
|
|
384
|
+
},
|
|
383
385
|
},
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
this._logger.debug("서버가 시작되었습니다.");
|
|
386
|
+
);
|
|
387
|
+
const port = await worker.run("listen", [
|
|
388
|
+
typeof pkgConfOrPort === "number" ? pkgConfOrPort : pkgPath,
|
|
389
|
+
]);
|
|
390
|
+
this._logger.debug("서버가 시작되었습니다.");
|
|
390
391
|
|
|
391
|
-
|
|
392
|
+
return { worker, port };
|
|
393
|
+
} catch (err) {
|
|
394
|
+
this._logger.error("서버 재시작 실패: ", err);
|
|
395
|
+
return {};
|
|
396
|
+
}
|
|
392
397
|
}
|
|
393
398
|
}
|