@simplysm/sd-cli 13.0.3 → 13.0.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyhB/D"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4hB/D"}
@@ -5,7 +5,7 @@ import { Worker } from "@simplysm/core-node";
5
5
  import { consola } from "consola";
6
6
  import { loadSdConfig } from "../utils/sd-config.js";
7
7
  import { getVersion } from "../utils/build-env.js";
8
- import { setupReplaceDeps } from "../utils/replace-deps.js";
8
+ import { setupReplaceDeps, watchReplaceDeps } from "../utils/replace-deps.js";
9
9
  import { Capacitor } from "../capacitor/capacitor.js";
10
10
  import { filterPackagesByTargets, getWatchScopes } from "../utils/package-utils.js";
11
11
  import { printErrors, printServers } from "../utils/output-utils.js";
@@ -27,8 +27,10 @@ async function runDev(options) {
27
27
  process.exitCode = 1;
28
28
  return;
29
29
  }
30
+ let replaceDepWatcher;
30
31
  if (sdConfig.replaceDeps != null) {
31
32
  await setupReplaceDeps(cwd, sdConfig.replaceDeps);
33
+ replaceDepWatcher = await watchReplaceDeps(cwd, sdConfig.replaceDeps);
32
34
  }
33
35
  const version = await getVersion(cwd);
34
36
  const baseEnv = { VER: version, DEV: "true" };
@@ -424,6 +426,7 @@ async function runDev(options) {
424
426
  ...[...serverBuildWorkers.values()].map(({ worker }) => worker.terminate()),
425
427
  ...[...serverRuntimeWorkers.values()].map((worker) => worker.terminate())
426
428
  ]);
429
+ replaceDepWatcher?.dispose();
427
430
  process.stdout.write("\u2714 \uC644\uB8CC\n");
428
431
  }
429
432
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/commands/dev.ts"],
4
- "mappings": "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",
4
+ "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,aAAa;AACtB,SAAS,cAAgC;AAEzC,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB,wBAAoD;AAI/E,SAAS,iBAAiB;AAC1B,SAAS,yBAAyB,sBAA0C;AAC5E,SAAS,aAAa,oBAAoB;AAC1C,SAAS,2BAA2B;AACpC;AAAA,EACE;AAAA,OAIK;AAyCP,eAAsB,OAAO,SAAoC;AAC/D,QAAM,EAAE,QAAQ,IAAI;AACpB,QAAM,MAAM,QAAQ,IAAI;AACxB,QAAM,SAAS,QAAQ,QAAQ,YAAY;AAE3C,SAAO,MAAM,oBAAU,EAAE,QAAQ,CAAC;AAGlC,MAAI;AACJ,MAAI;AACF,eAAW,MAAM,aAAa,EAAE,KAAK,KAAK,MAAM,KAAK,QAAQ,QAAQ,CAAC;AACtE,WAAO,MAAM,wCAAoB;AAAA,EACnC,SAAS,KAAK;AACZ,YAAQ,MAAM,2CAAuB,eAAe,QAAQ,IAAI,UAAU,GAAG,EAAE;AAC/E,YAAQ,WAAW;AACnB;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,SAAS,eAAe,MAAM;AAChC,UAAM,iBAAiB,KAAK,SAAS,WAAW;AAChD,wBAAoB,MAAM,iBAAiB,KAAK,SAAS,WAAW;AAAA,EACtE;AAGA,QAAM,UAAU,MAAM,WAAW,GAAG;AACpC,QAAM,UAAU,EAAE,KAAK,SAAS,KAAK,OAAO;AAG5C,QAAM,kBAAkB,KAAK,KAAK,KAAK,cAAc;AACrD,QAAM,cAAc,KAAK,MAAM,GAAG,aAAa,iBAAiB,OAAO,CAAC,EAAE;AAC1E,QAAM,cAAc,eAAe,WAAW;AAG9C,QAAM,cAAc,wBAAwB,SAAS,UAAU,OAAO;AAGtE,QAAM,iBAAyE,CAAC;AAChF,QAAM,iBAAyE,CAAC;AAEhF,aAAW,CAAC,MAAM,MAAM,KAAK,OAAO,QAAQ,WAAW,GAAG;AACxD,QAAI,OAAO,WAAW,UAAU;AAC9B,qBAAe,KAAK,EAAE,MAAM,OAAO,CAAC;AAAA,IACtC,WAAW,OAAO,WAAW,UAAU;AACrC,qBAAe,KAAK,EAAE,MAAM,OAAO,CAAC;AAAA,IACtC;AAAA,EACF;AAEA,MAAI,eAAe,WAAW,KAAK,eAAe,WAAW,GAAG;AAC9D,YAAQ,OAAO,MAAM,qFAAmC;AACxD;AAAA,EACF;AAGA,QAAM,cAAc,IAAI,IAAI,eAAe,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC;AAClE,QAAM,mBAAmB,oBAAI,IAAsB;AACnD,aAAW,EAAE,MAAM,OAAO,KAAK,gBAAgB;AAC7C,QAAI,OAAO,OAAO,WAAW,YAAY,YAAY,IAAI,OAAO,MAAM,GAAG;AACvE,YAAM,UAAU,iBAAiB,IAAI,OAAO,MAAM,KAAK,CAAC;AACxD,cAAQ,KAAK,IAAI;AACjB,uBAAiB,IAAI,OAAO,QAAQ,OAAO;AAAA,IAC7C;AAAA,EACF;AAGA,QAAM,mBAAmB,YAAY,QAAQ,0BAA0B;AACvE,QAAM,mBAAmB,YAAY,QAAQ,0BAA0B;AACvE,QAAM,0BAA0B,YAAY,QAAQ,kCAAkC;AAKtF,QAAM,0BAA8C,eACjD;AAAA,IACC,CAAC,EAAE,OAAO,MACR,OAAO,OAAO,WAAW,YAAa,OAAO,OAAO,WAAW,YAAY,CAAC,YAAY,IAAI,OAAO,MAAM;AAAA,EAC7G,EACC,IAAI,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,QAAQ,OAAO,OAAkC,gBAAgB;AAAA,IACjE,gBAAgB;AAAA,IAChB,eAAe;AAAA,EACjB,EAAE;AAGJ,QAAM,oBAAwC,eAC3C,OAAO,CAAC,EAAE,OAAO,MAAM,OAAO,OAAO,WAAW,YAAY,YAAY,IAAI,OAAO,MAAM,CAAC,EAC1F,IAAI,CAAC,EAAE,MAAM,OAAO,OAAO;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,QAAQ,OAAO,OAAkC,gBAAgB;AAAA,IACjE,gBAAgB;AAAA,IAChB,eAAe;AAAA,EACjB,EAAE;AAGJ,QAAM,UAAU,oBAAI,IAA2B;AAG/C,QAAM,iBAAiB,IAAI,oBAAoB,MAAM;AAGrD,iBAAe,GAAG,iBAAiB,MAAM;AACvC,gBAAY,OAAO;AACnB,iBAAa,SAAS,gBAAgB;AAAA,EACxC,CAAC;AAGD,MAAI;AACJ,QAAM,mBAAmB,IAAI,QAAc,CAAC,YAAY;AACtD,uBAAmB;AAAA,EACrB,CAAC;AAGD,QAAM,gBAAgB,MAAM;AAC1B,YAAQ,IAAI,UAAU,aAAa;AACnC,YAAQ,IAAI,WAAW,aAAa;AACpC,qBAAiB;AAAA,EACnB;AACA,UAAQ,GAAG,UAAU,aAAa;AAClC,UAAQ,GAAG,WAAW,aAAa;AAGnC,QAAM,gCAAgC,oBAAI,IAA2B;AACrE,aAAW,cAAc,yBAAyB;AAChD,kCAA8B;AAAA,MAC5B,WAAW;AAAA,MACX,IAAI,QAAc,CAAC,YAAY;AAC7B,mBAAW,gBAAgB;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,EACF;AAGA,QAAM,0BAA0B,oBAAI,IAA2B;AAC/D,QAAM,0BAA0B,oBAAI,IAA8D;AAClG,aAAW,cAAc,mBAAmB;AAC1C,4BAAwB;AAAA,MACtB,WAAW;AAAA,MACX,IAAI,QAAc,CAAC,YAAY;AAC7B,mBAAW,gBAAgB;AAAA,MAC7B,CAAC;AAAA,IACH;AAEA,QAAI;AACJ,UAAM,eAAe,IAAI,QAAc,CAAC,YAAY;AAClD,sBAAgB;AAAA,IAClB,CAAC;AACD,4BAAwB,IAAI,WAAW,MAAM,EAAE,SAAS,cAAc,UAAU,cAAc,CAAC;AAAA,EACjG;AAGA,QAAM,qBAAqB,oBAAI,IAQ7B;AACF,aAAW,EAAE,KAAK,KAAK,gBAAgB;AACrC,QAAI;AACJ,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAC7C,iBAAW;AAAA,IACb,CAAC;AACD,uBAAmB,IAAI,MAAM;AAAA,MAC3B,QAAQ,OAAO,OAAkC,gBAAgB;AAAA,MACjE,cAAc;AAAA,MACd,eAAe;AAAA,IACjB,CAAC;AAAA,EACH;AAGA,QAAM,cAAsC,CAAC;AAG7C,QAAM,uBAAuB,oBAAI,IAA2D;AAG5F,QAAM,wBAAwB,oBAAI,IAA8D;AAChG,aAAW,EAAE,KAAK,KAAK,gBAAgB;AACrC,QAAI;AACJ,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAC7C,iBAAW;AAAA,IACb,CAAC;AACD,0BAAsB,IAAI,MAAM,EAAE,SAAS,SAAS,CAAC;AAAA,EACvD;AAGA,QAAM,sBAAsB,oBAAI,IAA6C;AAC7E,aAAW,cAAc,yBAAyB;AAChD,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,QACE,WAAW,GAAG,WAAW,IAAI;AAAA,QAC7B,YAAY,GAAG,WAAW,IAAI;AAAA,QAC9B,YAAY;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,wBAAoB,IAAI,WAAW,MAAM,YAAY;AAGrD,eAAW,OAAO,GAAG,eAAe,CAAC,SAAS;AAC5C,YAAM,QAAQ;AACd,mBAAa;AAAA,QACX,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW,OAAO;AAAA,QAC1B,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM,MAAM;AAAA,MACd,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAGA,aAAW,cAAc,mBAAmB;AAC1C,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,QACE,WAAW,GAAG,WAAW,IAAI;AAAA,QAC7B,YAAY,GAAG,WAAW,IAAI;AAAA,QAC9B,YAAY;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,wBAAoB,IAAI,WAAW,MAAM,YAAY;AAGrD,eAAW,OAAO,GAAG,eAAe,CAAC,SAAS;AAC5C,YAAM,QAAQ;AACd,kBAAY,WAAW,IAAI,IAAI,MAAM;AAErC,8BAAwB,IAAI,WAAW,IAAI,GAAG,SAAS;AAEvD,mBAAa;AAAA,QACX,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW,OAAO;AAAA,QAC1B,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAGA,aAAW,EAAE,KAAK,KAAK,gBAAgB;AACrC,UAAM,cAAc,mBAAmB,IAAI,IAAI;AAC/C,QAAI,eAAe;AAEnB,gBAAY,OAAO,GAAG,cAAc,MAAM;AACxC,UAAI,CAAC,cAAc;AAEjB,cAAM,WAAW,eAAe,cAAc,GAAG,IAAI,WAAW,GAAG,IAAI,WAAW;AAClF,2BAAmB,IAAI,MAAM;AAAA,UAC3B,GAAG;AAAA,UACH,eAAe;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,gBAAY,OAAO,GAAG,SAAS,OAAO,SAAS;AAC7C,YAAM,QAAQ;AAEd,UAAI,MAAM,SAAS;AAEjB,cAAM,eAAe,mBAAmB,IAAI,IAAI;AAChD,qBAAa,aAAa,MAAM;AAGhC,cAAM,kBAAkB,qBAAqB,IAAI,IAAI;AACrD,YAAI,mBAAmB,MAAM;AAE3B,kBAAQ,KAAK,IAAI,IAAI,6CAAe;AACpC,gBAAM,gBAAgB,UAAU;AAAA,QAClC;AAGA,cAAM,gBAAgB,OAAO,OAAyC,uBAAuB;AAC7F,6BAAqB,IAAI,MAAM,aAAa;AAG5C,cAAM,mBAAmB,iBAAiB,IAAI,IAAI,KAAK,CAAC;AACxD,cAAM,sBAAsB,iBACzB,IAAI,CAAC,eAAe,wBAAwB,IAAI,UAAU,GAAG,OAAO,EACpE,OAAO,CAAC,MAA0B,KAAK,IAAI;AAC9C,YAAI,oBAAoB,SAAS,GAAG;AAClC,gBAAM,QAAQ,IAAI,mBAAmB;AAAA,QACvC;AAGA,cAAM,oBAA4C,CAAC;AACnD,mBAAW,cAAc,kBAAkB;AACzC,cAAI,cAAc,aAAa;AAC7B,8BAAkB,UAAU,IAAI,YAAY,UAAU;AAAA,UACxD;AAAA,QACF;AAGA,sBAAc,GAAG,eAAe,CAAC,cAAc;AAC7C,gBAAM,aAAa;AACnB,kBAAQ,IAAI,GAAG,IAAI,WAAW;AAAA,YAC5B;AAAA,YACA,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM,WAAW;AAAA,UACnB,CAAC;AAED,cAAI,cAAc;AAChB,2BAAe;AACf,kCAAsB,IAAI,IAAI,GAAG,SAAS;AAAA,UAC5C;AACA,uBAAa,cAAc;AAAA,QAC7B,CAAC;AAED,sBAAc,GAAG,SAAS,CAAC,cAAc;AACvC,gBAAM,aAAa;AACnB,kBAAQ,IAAI,GAAG,IAAI,WAAW;AAAA,YAC5B;AAAA,YACA,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS,WAAW;AAAA,UACtB,CAAC;AAED,cAAI,cAAc;AAChB,2BAAe;AACf,kCAAsB,IAAI,IAAI,GAAG,SAAS;AAAA,UAC5C;AACA,uBAAa,cAAc;AAAA,QAC7B,CAAC;AAGD,aAAK,cAAc,MAAM;AAAA,UACvB,YAAY,MAAM;AAAA,UAClB,aAAa;AAAA,QACf,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,GAAG,IAAI,UAAU;AAAA,UAC3B;AAAA,UACA,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,MAAM,QAAQ,KAAK,IAAI;AAAA,QAClC,CAAC;AAED,YAAI,cAAc;AAChB,yBAAe;AACf,gCAAsB,IAAI,IAAI,GAAG,SAAS;AAAA,QAC5C;AACA,oBAAY,cAAc;AAAA,MAC5B;AAAA,IACF,CAAC;AAED,gBAAY,OAAO,GAAG,SAAS,CAAC,SAAS;AACvC,YAAM,QAAQ;AACd,cAAQ,IAAI,GAAG,IAAI,UAAU;AAAA,QAC3B;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,MAAM;AAAA,MACjB,CAAC;AACD,kBAAY,cAAc;AAAA,IAC5B,CAAC;AAAA,EACH;AAGA,QAAM,eAAe,IAAI;AAAA,IACvB;AAAA;AAAA,MAEE,GAAG,wBAAwB,IAAI,CAAC,gBAAgB;AAAA,QAC9C,OAAO,GAAG,WAAW,IAAI;AAAA,QACzB,MAAM,MAAM,8BAA8B,IAAI,WAAW,IAAI,KAAK,QAAQ,QAAQ;AAAA,MACpF,EAAE;AAAA;AAAA,MAEF,GAAG,kBAAkB,IAAI,CAAC,gBAAgB;AAAA,QACxC,OAAO,GAAG,WAAW,IAAI;AAAA,QACzB,MAAM,MAAM,wBAAwB,IAAI,WAAW,IAAI,KAAK,QAAQ,QAAQ;AAAA,MAC9E,EAAE;AAAA;AAAA,MAEF,GAAG,eAAe,IAAI,CAAC,EAAE,KAAK,OAAO;AAAA,QACnC,OAAO,GAAG,IAAI;AAAA,QACd,MAAM,MAAM,sBAAsB,IAAI,IAAI,GAAG,WAAW,QAAQ,QAAQ;AAAA,MAC1E,EAAE;AAAA,IACJ;AAAA,IACA,EAAE,YAAY,KAAK;AAAA,EACrB;AAGA,aAAW,cAAc,yBAAyB;AAChD,UAAM,SAAS,KAAK,KAAK,KAAK,YAAY,WAAW,IAAI;AACzD,UAAM,eAAe,oBAAoB,IAAI,WAAW,IAAI;AAC5D,UAAM,eAAsC;AAAA,MAC1C,GAAG,WAAW;AAAA,MACd,KAAK,EAAE,GAAG,SAAS,GAAG,WAAW,OAAO,IAAI;AAAA,IAC9C;AACA,eAAW,OACR,WAAW;AAAA,MACV,MAAM,WAAW;AAAA,MACjB,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EACA,MAAM,CAAC,QAAiB;AACvB,mBAAa;AAAA,QACX,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW,OAAO;AAAA,QAC1B,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC1D,CAAC;AAAA,IACH,CAAC;AAAA,EACL;AAGA,aAAW,cAAc,mBAAmB;AAC1C,UAAM,SAAS,KAAK,KAAK,KAAK,YAAY,WAAW,IAAI;AACzD,UAAM,eAAe,oBAAoB,IAAI,WAAW,IAAI;AAE5D,UAAM,aAAoC;AAAA,MACxC,GAAG,WAAW;AAAA,MACd,QAAQ;AAAA;AAAA,MACR,KAAK,EAAE,GAAG,SAAS,GAAG,WAAW,OAAO,IAAI;AAAA,IAC9C;AACA,eAAW,OACR,WAAW;AAAA,MACV,MAAM,WAAW;AAAA,MACjB,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EACA,MAAM,CAAC,QAAiB;AACvB,mBAAa;AAAA,QACX,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW,OAAO;AAAA,QAC1B,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC1D,CAAC;AAAA,IACH,CAAC;AAAA,EACL;AAGA,aAAW,EAAE,MAAM,OAAO,KAAK,gBAAgB;AAC7C,UAAM,SAAS,KAAK,KAAK,KAAK,YAAY,IAAI;AAC9C,UAAM,cAAc,mBAAmB,IAAI,IAAI;AAC/C,gBAAY,OACT,WAAW;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,EAAE,GAAG,SAAS,GAAG,OAAO,IAAI;AAAA,MACjC,SAAS,OAAO;AAAA,MAChB,WAAW,OAAO;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,QAAiB;AACvB,cAAQ,IAAI,GAAG,IAAI,UAAU;AAAA,QAC3B;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC1D,CAAC;AACD,kBAAY,cAAc;AAAA,IAC5B,CAAC;AAAA,EACL;AAGA,QAAM,aAAa,IAAI;AAGvB,QAAM,oBAA4D,CAAC;AACnE,aAAW,EAAE,MAAM,OAAO,KAAK,gBAAgB;AAC7C,QAAI,OAAO,aAAa,MAAM;AAC5B,wBAAkB,KAAK,CAAC,MAAM,MAAM,CAAC;AAAA,IACvC;AAAA,EACF;AAEA,MAAI,kBAAkB,SAAS,GAAG;AAChC,UAAM,iBAAiB,IAAI;AAAA,MACzB,kBAAkB,IAAI,CAAC,CAAC,MAAM,MAAM,OAAO;AAAA,QACzC,OAAO,GAAG,IAAI;AAAA,QACd,MAAM,YAAY;AAChB,gBAAM,SAAS,KAAK,KAAK,KAAK,YAAY,IAAI;AAC9C,cAAI;AACF,kBAAM,MAAM,MAAM,UAAU,OAAO,QAAQ,OAAO,SAAU;AAC5D,kBAAM,IAAI,WAAW;AACrB,oBAAQ,IAAI,GAAG,IAAI,cAAc;AAAA,cAC/B;AAAA,cACA,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,QAAQ;AAAA,YACV,CAAC;AAAA,UACH,SAAS,KAAK;AACZ,oBAAQ,IAAI,GAAG,IAAI,cAAc;AAAA,cAC/B;AAAA,cACA,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,YAC1D,CAAC;AACD,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF,EAAE;AAAA,MACF,EAAE,YAAY,OAAO,aAAa,MAAM;AAAA,IAC1C;AAEA,QAAI;AACF,YAAM,eAAe,IAAI;AAAA,IAC3B,QAAQ;AAAA,IAER;AAAA,EACF;AAGA,cAAY,OAAO;AACnB,eAAa,SAAS,gBAAgB;AAGtC,QAAM;AAGN,UAAQ,OAAO,MAAM,iCAAa;AAClC,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,wBAAwB,IAAI,CAAC,EAAE,OAAO,MAAM,OAAO,UAAU,CAAC;AAAA,IACjE,GAAG,kBAAkB,IAAI,CAAC,EAAE,OAAO,MAAM,OAAO,UAAU,CAAC;AAAA,IAC3D,GAAG,CAAC,GAAG,mBAAmB,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,MAAM,OAAO,UAAU,CAAC;AAAA,IAC1E,GAAG,CAAC,GAAG,qBAAqB,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,OAAO,UAAU,CAAC;AAAA,EAC1E,CAAC;AACD,qBAAmB,QAAQ;AAC3B,UAAQ,OAAO,MAAM,uBAAQ;AAC/B;",
5
5
  "names": []
6
6
  }
@@ -23,6 +23,7 @@ export declare class WatchOrchestrator {
23
23
  private _dtsBuilder;
24
24
  private _packages;
25
25
  private _copySrcWatchers;
26
+ private _replaceDepWatcher;
26
27
  constructor(options: WatchOrchestratorOptions);
27
28
  /**
28
29
  * Orchestrator 초기화
@@ -1 +1 @@
1
- {"version":3,"file":"WatchOrchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrators/WatchOrchestrator.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,OAAO,EAAE,wBAAwB;IAK7C;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0EjC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C5B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBhC"}
1
+ {"version":3,"file":"WatchOrchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrators/WatchOrchestrator.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,kBAAkB,CAAoC;gBAElD,OAAO,EAAE,wBAAwB;IAK7C;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2EjC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C5B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBhC"}
@@ -3,7 +3,7 @@ import { Listr } from "listr2";
3
3
  import { consola } from "consola";
4
4
  import { loadSdConfig } from "../utils/sd-config.js";
5
5
  import { filterPackagesByTargets } from "../utils/package-utils.js";
6
- import { setupReplaceDeps } from "../utils/replace-deps.js";
6
+ import { setupReplaceDeps, watchReplaceDeps } from "../utils/replace-deps.js";
7
7
  import { printErrors } from "../utils/output-utils.js";
8
8
  import { RebuildListrManager } from "../utils/listr-manager.js";
9
9
  import { ResultCollector } from "../infra/ResultCollector.js";
@@ -22,6 +22,7 @@ class WatchOrchestrator {
22
22
  _dtsBuilder;
23
23
  _packages = [];
24
24
  _copySrcWatchers = [];
25
+ _replaceDepWatcher;
25
26
  constructor(options) {
26
27
  this._cwd = process.cwd();
27
28
  this._options = options;
@@ -49,6 +50,7 @@ class WatchOrchestrator {
49
50
  }
50
51
  if (sdConfig.replaceDeps != null) {
51
52
  await setupReplaceDeps(this._cwd, sdConfig.replaceDeps);
53
+ this._replaceDepWatcher = await watchReplaceDeps(this._cwd, sdConfig.replaceDeps);
52
54
  }
53
55
  const allPackages = filterPackagesByTargets(sdConfig.packages, this._options.targets);
54
56
  const isLibraryTarget = (target) => target === "node" || target === "browser" || target === "neutral";
@@ -144,6 +146,7 @@ class WatchOrchestrator {
144
146
  ...this._copySrcWatchers.map((w) => w.close())
145
147
  ]);
146
148
  this._copySrcWatchers = [];
149
+ this._replaceDepWatcher?.dispose();
147
150
  process.stdout.write("\u2714 \uC644\uB8CC\n");
148
151
  }
149
152
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/orchestrators/WatchOrchestrator.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -19,14 +19,44 @@ export declare function resolveReplaceDepEntries(replaceDeps: Record<string, str
19
19
  */
20
20
  export declare function parseWorkspaceGlobs(content: string): string[];
21
21
  /**
22
- * replaceDeps 설정에 따라 node_modules 내 패키지를 소스 디렉토리로 symlink 교체한다.
22
+ * replaceDeps 복사 교체 항목
23
+ */
24
+ export interface ReplaceDepEntry {
25
+ targetName: string;
26
+ sourcePath: string;
27
+ targetPath: string;
28
+ resolvedSourcePath: string;
29
+ actualTargetPath: string;
30
+ }
31
+ /**
32
+ * watchReplaceDeps 반환 타입
33
+ */
34
+ export interface WatchReplaceDepResult {
35
+ entries: ReplaceDepEntry[];
36
+ dispose: () => void;
37
+ }
38
+ /**
39
+ * replaceDeps 설정에 따라 node_modules 내 패키지를 소스 디렉토리로 복사 교체한다.
23
40
  *
24
41
  * 1. pnpm-workspace.yaml 파싱 → workspace 패키지 경로 목록
25
42
  * 2. [루트, ...workspace 패키지]의 node_modules에서 매칭되는 패키지 찾기
26
- * 3. 기존 symlink/디렉토리 제거 → 소스 경로로 symlink 생성
43
+ * 3. 기존 symlink/디렉토리 제거 → 소스 경로를 복사 (node_modules, package.json, .cache, tests 제외)
27
44
  *
28
45
  * @param projectRoot - 프로젝트 루트 경로
29
46
  * @param replaceDeps - sd.config.ts의 replaceDeps 설정
30
47
  */
31
48
  export declare function setupReplaceDeps(projectRoot: string, replaceDeps: Record<string, string>): Promise<void>;
49
+ /**
50
+ * replaceDeps 설정에 따라 소스 디렉토리를 watch하여 변경 시 대상 경로로 복사한다.
51
+ *
52
+ * 1. pnpm-workspace.yaml 파싱 → workspace 패키지 경로 목록
53
+ * 2. [루트, ...workspace 패키지]의 node_modules에서 매칭되는 패키지 찾기
54
+ * 3. 소스 디렉토리를 FsWatcher로 watch (300ms delay)
55
+ * 4. 변경 시 대상 경로로 복사 (node_modules, package.json, .cache, tests 제외)
56
+ *
57
+ * @param projectRoot - 프로젝트 루트 경로
58
+ * @param replaceDeps - sd.config.ts의 replaceDeps 설정
59
+ * @returns entries와 dispose 함수
60
+ */
61
+ export declare function watchReplaceDeps(projectRoot: string, replaceDeps: Record<string, string>): Promise<WatchReplaceDepResult>;
32
62
  //# sourceMappingURL=replace-deps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replace-deps.d.ts","sourceRoot":"","sources":["../../src/utils/replace-deps.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,WAAW,EAAE,MAAM,EAAE,GACpB,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA8B7D;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE9G"}
1
+ {"version":3,"file":"replace-deps.d.ts","sourceRoot":"","sources":["../../src/utils/replace-deps.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,WAAW,EAAE,MAAM,EAAE,GACpB,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA8B7D;AAmBD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF9G;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,OAAO,CAAC,qBAAqB,CAAC,CA8IhC"}
@@ -2,6 +2,7 @@ import fs from "fs";
2
2
  import path from "path";
3
3
  import { glob } from "glob";
4
4
  import { consola } from "consola";
5
+ import { fsCopy, fsMkdir, fsRm, FsWatcher } from "@simplysm/core-node";
5
6
  function resolveReplaceDepEntries(replaceDeps, targetNames) {
6
7
  const results = [];
7
8
  for (const [pattern, sourceTemplate] of Object.entries(replaceDeps)) {
@@ -44,6 +45,11 @@ function parseWorkspaceGlobs(content) {
44
45
  }
45
46
  return globs;
46
47
  }
48
+ const EXCLUDED_NAMES = /* @__PURE__ */ new Set(["node_modules", "package.json", ".cache", "tests"]);
49
+ function replaceDepsCopyFilter(itemPath) {
50
+ const basename = path.basename(itemPath);
51
+ return !EXCLUDED_NAMES.has(basename);
52
+ }
47
53
  async function setupReplaceDeps(projectRoot, replaceDeps) {
48
54
  const logger = consola.withTag("sd:cli:replace-deps");
49
55
  const searchRoots = [projectRoot];
@@ -81,19 +87,137 @@ async function setupReplaceDeps(projectRoot, replaceDeps) {
81
87
  continue;
82
88
  }
83
89
  try {
84
- await fs.promises.rm(targetPath, { recursive: true, force: true });
85
- const relativePath = path.relative(path.dirname(targetPath), resolvedSourcePath);
86
- await fs.promises.symlink(relativePath, targetPath, "dir");
90
+ let actualTargetPath = targetPath;
91
+ let isSymlink = false;
92
+ try {
93
+ const stat = await fs.promises.lstat(targetPath);
94
+ if (stat.isSymbolicLink()) {
95
+ actualTargetPath = await fs.promises.realpath(targetPath);
96
+ isSymlink = true;
97
+ }
98
+ } catch {
99
+ }
100
+ await fs.promises.rm(actualTargetPath, { recursive: true, force: true });
101
+ if (isSymlink) {
102
+ await fs.promises.rm(targetPath, { recursive: true, force: true });
103
+ }
104
+ await fsCopy(resolvedSourcePath, targetPath, replaceDepsCopyFilter);
87
105
  logger.info(`${targetName} \u2192 ${sourcePath}`);
88
106
  } catch (err) {
89
- logger.error(`symlink \uAD50\uCCB4 \uC2E4\uD328 (${targetName}): ${err instanceof Error ? err.message : err}`);
107
+ logger.error(`\uBCF5\uC0AC \uAD50\uCCB4 \uC2E4\uD328 (${targetName}): ${err instanceof Error ? err.message : err}`);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ async function watchReplaceDeps(projectRoot, replaceDeps) {
113
+ const logger = consola.withTag("sd:cli:replace-deps:watch");
114
+ const entries = [];
115
+ const searchRoots = [projectRoot];
116
+ const workspaceYamlPath = path.join(projectRoot, "pnpm-workspace.yaml");
117
+ try {
118
+ const yamlContent = await fs.promises.readFile(workspaceYamlPath, "utf-8");
119
+ const workspaceGlobs = parseWorkspaceGlobs(yamlContent);
120
+ for (const pattern of workspaceGlobs) {
121
+ const dirs = await glob(pattern, { cwd: projectRoot, absolute: true });
122
+ searchRoots.push(...dirs);
123
+ }
124
+ } catch {
125
+ }
126
+ for (const searchRoot of searchRoots) {
127
+ const nodeModulesDir = path.join(searchRoot, "node_modules");
128
+ try {
129
+ await fs.promises.access(nodeModulesDir);
130
+ } catch {
131
+ continue;
132
+ }
133
+ const targetNames = [];
134
+ for (const pattern of Object.keys(replaceDeps)) {
135
+ const matches = await glob(pattern, { cwd: nodeModulesDir });
136
+ targetNames.push(...matches);
137
+ }
138
+ if (targetNames.length === 0) continue;
139
+ const matchedEntries = resolveReplaceDepEntries(replaceDeps, targetNames);
140
+ for (const { targetName, sourcePath } of matchedEntries) {
141
+ const targetPath = path.join(nodeModulesDir, targetName);
142
+ const resolvedSourcePath = path.resolve(projectRoot, sourcePath);
143
+ try {
144
+ await fs.promises.access(resolvedSourcePath);
145
+ } catch {
146
+ logger.warn(`\uC18C\uC2A4 \uACBD\uB85C\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC544 \uC2A4\uD0B5\uD569\uB2C8\uB2E4: ${resolvedSourcePath}`);
147
+ continue;
148
+ }
149
+ let actualTargetPath = targetPath;
150
+ try {
151
+ const stat = await fs.promises.lstat(targetPath);
152
+ if (stat.isSymbolicLink()) {
153
+ actualTargetPath = await fs.promises.realpath(targetPath);
154
+ }
155
+ } catch {
90
156
  }
157
+ entries.push({
158
+ targetName,
159
+ sourcePath,
160
+ targetPath,
161
+ resolvedSourcePath,
162
+ actualTargetPath
163
+ });
91
164
  }
92
165
  }
166
+ const watchers = [];
167
+ const watchedSources = /* @__PURE__ */ new Set();
168
+ for (const entry of entries) {
169
+ if (watchedSources.has(entry.resolvedSourcePath)) continue;
170
+ watchedSources.add(entry.resolvedSourcePath);
171
+ const watcher = await FsWatcher.watch([entry.resolvedSourcePath], { followSymlinks: false });
172
+ watcher.onChange({ delay: 300 }, async (changeInfos) => {
173
+ for (const { path: changedPath } of changeInfos) {
174
+ const basename = path.basename(changedPath);
175
+ if (EXCLUDED_NAMES.has(basename)) continue;
176
+ for (const e of entries) {
177
+ if (e.resolvedSourcePath !== entry.resolvedSourcePath) continue;
178
+ const relativePath = path.relative(e.resolvedSourcePath, changedPath);
179
+ const destPath = path.join(e.actualTargetPath, relativePath);
180
+ try {
181
+ let sourceExists = false;
182
+ try {
183
+ await fs.promises.access(changedPath);
184
+ sourceExists = true;
185
+ } catch {
186
+ }
187
+ if (sourceExists) {
188
+ const stat = await fs.promises.stat(changedPath);
189
+ if (stat.isDirectory()) {
190
+ await fsMkdir(destPath);
191
+ } else {
192
+ await fsMkdir(path.dirname(destPath));
193
+ await fsCopy(changedPath, destPath, replaceDepsCopyFilter);
194
+ }
195
+ logger.info(`\uBCF5\uC0AC: ${relativePath} \u2192 ${e.targetName}`);
196
+ } else {
197
+ await fsRm(destPath);
198
+ logger.info(`\uC0AD\uC81C: ${relativePath} (${e.targetName})`);
199
+ }
200
+ } catch (err) {
201
+ logger.error(`\uBCF5\uC0AC \uC2E4\uD328 (${e.targetName}/${relativePath}): ${err instanceof Error ? err.message : err}`);
202
+ }
203
+ }
204
+ }
205
+ });
206
+ watchers.push(watcher);
207
+ }
208
+ return {
209
+ entries,
210
+ dispose: () => {
211
+ for (const watcher of watchers) {
212
+ void watcher.close();
213
+ }
214
+ }
215
+ };
93
216
  }
94
217
  export {
95
218
  parseWorkspaceGlobs,
96
219
  resolveReplaceDepEntries,
97
- setupReplaceDeps
220
+ setupReplaceDeps,
221
+ watchReplaceDeps
98
222
  };
99
223
  //# sourceMappingURL=replace-deps.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/replace-deps.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.worker.d.ts","sourceRoot":"","sources":["../../src/workers/client.worker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAMhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,sBAAsB,CAAC;IACpC,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAoDD;;GAEG;AACH,iBAAe,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgCtE;AAKD;;;;GAIG;AACH,iBAAe,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C9D;AAED;;;GAGG;AACH,iBAAe,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAExC;AAED,QAAA,MAAM,MAAM;;;eACD,OAAO,KAAK;oBAAc,OAAO,UAAU;mBAAa,OAAO,SAAS;;;CAMjF,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"client.worker.d.ts","sourceRoot":"","sources":["../../src/workers/client.worker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAMhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,sBAAsB,CAAC;IACpC,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAoDD;;GAEG;AACH,iBAAe,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgCtE;AAKD;;;;GAIG;AACH,iBAAe,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD9D;AAED;;;GAGG;AACH,iBAAe,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAExC;AAED,QAAA,MAAM,MAAM;;;eACD,OAAO,KAAK;oBAAc,OAAO,UAAU;mBAAa,OAAO,SAAS;;;CAMjF,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -78,7 +78,9 @@ async function startWatch(info) {
78
78
  const confDistPath = path.join(info.pkgDir, "dist", ".config.json");
79
79
  fs.mkdirSync(path.dirname(confDistPath), { recursive: true });
80
80
  fs.writeFileSync(confDistPath, JSON.stringify(info.config.configs ?? {}, void 0, 2));
81
- sender.send("serverReady", { port: viteServer.config.server.port });
81
+ const address = viteServer.httpServer?.address();
82
+ const actualPort = typeof address === "object" && address != null ? address.port : viteServer.config.server.port;
83
+ sender.send("serverReady", { port: actualPort });
82
84
  } catch (err) {
83
85
  sender.send("error", {
84
86
  message: err instanceof Error ? err.message : String(err)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/workers/client.worker.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
3
  "sideEffects": false,
4
- "version": "13.0.3",
4
+ "version": "13.0.8",
5
5
  "description": "심플리즘 패키지 - CLI 도구",
6
6
  "author": "김석래",
7
7
  "repository": {
@@ -28,10 +28,10 @@
28
28
  "esbuild": "^0.27.3",
29
29
  "esbuild-plugin-solid": "^0.6.0",
30
30
  "eslint": "^9.39.2",
31
- "glob": "^13.0.2",
31
+ "glob": "^13.0.3",
32
32
  "handlebars": "^4.7.8",
33
33
  "jiti": "^2.6.1",
34
- "listr2": "^9.0.5",
34
+ "listr2": "^10.1.0",
35
35
  "semver": "^7.7.4",
36
36
  "sharp": "^0.34.5",
37
37
  "solid-js": "^1.9.11",
@@ -43,11 +43,11 @@
43
43
  "vite": "^7.3.1",
44
44
  "vite-plugin-pwa": "^1.2.0",
45
45
  "vite-plugin-solid": "^2.11.10",
46
- "vite-tsconfig-paths": "^6.1.0",
46
+ "vite-tsconfig-paths": "^6.1.1",
47
47
  "yargs": "^18.0.0",
48
- "@simplysm/core-common": "13.0.3",
49
- "@simplysm/core-node": "13.0.3",
50
- "@simplysm/storage": "13.0.3"
48
+ "@simplysm/core-common": "13.0.8",
49
+ "@simplysm/storage": "13.0.8",
50
+ "@simplysm/core-node": "13.0.8"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/semver": "^7.7.1",
@@ -6,7 +6,7 @@ import type { SdConfig, SdClientPackageConfig, SdServerPackageConfig } from "../
6
6
  import { consola } from "consola";
7
7
  import { loadSdConfig } from "../utils/sd-config";
8
8
  import { getVersion } from "../utils/build-env";
9
- import { setupReplaceDeps } from "../utils/replace-deps";
9
+ import { setupReplaceDeps, watchReplaceDeps, type WatchReplaceDepResult } from "../utils/replace-deps";
10
10
  import type * as ClientWorkerModule from "../workers/client.worker";
11
11
  import type * as ServerWorkerModule from "../workers/server.worker";
12
12
  import type * as ServerRuntimeWorkerModule from "../workers/server-runtime.worker";
@@ -79,8 +79,10 @@ export async function runDev(options: DevOptions): Promise<void> {
79
79
  }
80
80
 
81
81
  // replaceDeps 설정이 있으면 symlink 교체
82
+ let replaceDepWatcher: WatchReplaceDepResult | undefined;
82
83
  if (sdConfig.replaceDeps != null) {
83
84
  await setupReplaceDeps(cwd, sdConfig.replaceDeps);
85
+ replaceDepWatcher = await watchReplaceDeps(cwd, sdConfig.replaceDeps);
84
86
  }
85
87
 
86
88
  // VER, DEV 환경변수 준비
@@ -596,6 +598,7 @@ export async function runDev(options: DevOptions): Promise<void> {
596
598
  ...[...serverBuildWorkers.values()].map(({ worker }) => worker.terminate()),
597
599
  ...[...serverRuntimeWorkers.values()].map((worker) => worker.terminate()),
598
600
  ]);
601
+ replaceDepWatcher?.dispose();
599
602
  process.stdout.write("✔ 완료\n");
600
603
  }
601
604
 
@@ -4,7 +4,7 @@ import { consola } from "consola";
4
4
  import type { BuildTarget, SdConfig, SdPackageConfig } from "../sd-config.types";
5
5
  import { loadSdConfig } from "../utils/sd-config";
6
6
  import { filterPackagesByTargets } from "../utils/package-utils";
7
- import { setupReplaceDeps } from "../utils/replace-deps";
7
+ import { setupReplaceDeps, watchReplaceDeps, type WatchReplaceDepResult } from "../utils/replace-deps";
8
8
  import { printErrors } from "../utils/output-utils";
9
9
  import { RebuildListrManager } from "../utils/listr-manager";
10
10
  import { ResultCollector } from "../infra/ResultCollector";
@@ -43,6 +43,7 @@ export class WatchOrchestrator {
43
43
  private _dtsBuilder!: DtsBuilder;
44
44
  private _packages: PackageInfo[] = [];
45
45
  private _copySrcWatchers: FsWatcher[] = [];
46
+ private _replaceDepWatcher: WatchReplaceDepResult | undefined;
46
47
 
47
48
  constructor(options: WatchOrchestratorOptions) {
48
49
  this._cwd = process.cwd();
@@ -76,6 +77,7 @@ export class WatchOrchestrator {
76
77
  // replaceDeps 설정이 있으면 symlink 교체
77
78
  if (sdConfig.replaceDeps != null) {
78
79
  await setupReplaceDeps(this._cwd, sdConfig.replaceDeps);
80
+ this._replaceDepWatcher = await watchReplaceDeps(this._cwd, sdConfig.replaceDeps);
79
81
  }
80
82
 
81
83
  // targets 필터링
@@ -205,6 +207,7 @@ export class WatchOrchestrator {
205
207
  ...this._copySrcWatchers.map((w) => w.close()),
206
208
  ]);
207
209
  this._copySrcWatchers = [];
210
+ this._replaceDepWatcher?.dispose();
208
211
 
209
212
  process.stdout.write("✔ 완료\n");
210
213
  }
@@ -2,6 +2,7 @@ import fs from "fs";
2
2
  import path from "path";
3
3
  import { glob } from "glob";
4
4
  import { consola } from "consola";
5
+ import { fsCopy, fsMkdir, fsRm, FsWatcher } from "@simplysm/core-node";
5
6
 
6
7
  /**
7
8
  * replaceDeps 설정의 glob 패턴과 대상 패키지 목록을 매칭하여
@@ -83,11 +84,47 @@ export function parseWorkspaceGlobs(content: string): string[] {
83
84
  }
84
85
 
85
86
  /**
86
- * replaceDeps 설정에 따라 node_modules 내 패키지를 소스 디렉토리로 symlink 교체한다.
87
+ * 복사 제외할 항목 이름들
88
+ */
89
+ const EXCLUDED_NAMES = new Set(["node_modules", "package.json", ".cache", "tests"]);
90
+
91
+ /**
92
+ * replaceDeps 복사 시 사용할 필터 함수
93
+ * node_modules, package.json, .cache, tests를 제외한다.
94
+ *
95
+ * @param itemPath - 복사할 항목의 절대 경로
96
+ * @returns 복사 대상이면 true, 제외하면 false
97
+ */
98
+ function replaceDepsCopyFilter(itemPath: string): boolean {
99
+ const basename = path.basename(itemPath);
100
+ return !EXCLUDED_NAMES.has(basename);
101
+ }
102
+
103
+ /**
104
+ * replaceDeps 복사 교체 항목
105
+ */
106
+ export interface ReplaceDepEntry {
107
+ targetName: string;
108
+ sourcePath: string;
109
+ targetPath: string;
110
+ resolvedSourcePath: string;
111
+ actualTargetPath: string;
112
+ }
113
+
114
+ /**
115
+ * watchReplaceDeps 반환 타입
116
+ */
117
+ export interface WatchReplaceDepResult {
118
+ entries: ReplaceDepEntry[];
119
+ dispose: () => void;
120
+ }
121
+
122
+ /**
123
+ * replaceDeps 설정에 따라 node_modules 내 패키지를 소스 디렉토리로 복사 교체한다.
87
124
  *
88
125
  * 1. pnpm-workspace.yaml 파싱 → workspace 패키지 경로 목록
89
126
  * 2. [루트, ...workspace 패키지]의 node_modules에서 매칭되는 패키지 찾기
90
- * 3. 기존 symlink/디렉토리 제거 → 소스 경로로 symlink 생성
127
+ * 3. 기존 symlink/디렉토리 제거 → 소스 경로를 복사 (node_modules, package.json, .cache, tests 제외)
91
128
  *
92
129
  * @param projectRoot - 프로젝트 루트 경로
93
130
  * @param replaceDeps - sd.config.ts의 replaceDeps 설정
@@ -133,7 +170,7 @@ export async function setupReplaceDeps(projectRoot: string, replaceDeps: Record<
133
170
  // 패턴 매칭 및 경로 해석
134
171
  const entries = resolveReplaceDepEntries(replaceDeps, targetNames);
135
172
 
136
- // 3. Symlink 교체
173
+ // 3. 복사 교체
137
174
  for (const { targetName, sourcePath } of entries) {
138
175
  const targetPath = path.join(nodeModulesDir, targetName);
139
176
  const resolvedSourcePath = path.resolve(projectRoot, sourcePath);
@@ -147,17 +184,193 @@ export async function setupReplaceDeps(projectRoot: string, replaceDeps: Record<
147
184
  }
148
185
 
149
186
  try {
150
- // 기존 symlink/디렉토리 제거
151
- await fs.promises.rm(targetPath, { recursive: true, force: true });
187
+ // targetPath가 symlink realpath로 해석하여 실제 .pnpm 스토어 경로 얻기
188
+ let actualTargetPath = targetPath;
189
+ let isSymlink = false;
190
+ try {
191
+ const stat = await fs.promises.lstat(targetPath);
192
+ if (stat.isSymbolicLink()) {
193
+ actualTargetPath = await fs.promises.realpath(targetPath);
194
+ isSymlink = true;
195
+ }
196
+ } catch {
197
+ // targetPath가 존재하지 않으면 그대로 사용
198
+ }
152
199
 
153
- // 상대 경로로 symlink 생성
154
- const relativePath = path.relative(path.dirname(targetPath), resolvedSourcePath);
155
- await fs.promises.symlink(relativePath, targetPath, "dir");
200
+ // 기존 디렉토리 제거
201
+ await fs.promises.rm(actualTargetPath, { recursive: true, force: true });
202
+
203
+ // symlink였다면 symlink도 제거
204
+ if (isSymlink) {
205
+ await fs.promises.rm(targetPath, { recursive: true, force: true });
206
+ }
207
+
208
+ // 소스를 복사 (node_modules, package.json, .cache, tests 제외)
209
+ await fsCopy(resolvedSourcePath, targetPath, replaceDepsCopyFilter);
156
210
 
157
211
  logger.info(`${targetName} → ${sourcePath}`);
158
212
  } catch (err) {
159
- logger.error(`symlink 교체 실패 (${targetName}): ${err instanceof Error ? err.message : err}`);
213
+ logger.error(`복사 교체 실패 (${targetName}): ${err instanceof Error ? err.message : err}`);
160
214
  }
161
215
  }
162
216
  }
163
217
  }
218
+
219
+ /**
220
+ * replaceDeps 설정에 따라 소스 디렉토리를 watch하여 변경 시 대상 경로로 복사한다.
221
+ *
222
+ * 1. pnpm-workspace.yaml 파싱 → workspace 패키지 경로 목록
223
+ * 2. [루트, ...workspace 패키지]의 node_modules에서 매칭되는 패키지 찾기
224
+ * 3. 소스 디렉토리를 FsWatcher로 watch (300ms delay)
225
+ * 4. 변경 시 대상 경로로 복사 (node_modules, package.json, .cache, tests 제외)
226
+ *
227
+ * @param projectRoot - 프로젝트 루트 경로
228
+ * @param replaceDeps - sd.config.ts의 replaceDeps 설정
229
+ * @returns entries와 dispose 함수
230
+ */
231
+ export async function watchReplaceDeps(
232
+ projectRoot: string,
233
+ replaceDeps: Record<string, string>,
234
+ ): Promise<WatchReplaceDepResult> {
235
+ const logger = consola.withTag("sd:cli:replace-deps:watch");
236
+ const entries: ReplaceDepEntry[] = [];
237
+
238
+ // 1. Workspace 패키지 경로 목록 수집
239
+ const searchRoots = [projectRoot];
240
+
241
+ const workspaceYamlPath = path.join(projectRoot, "pnpm-workspace.yaml");
242
+ try {
243
+ const yamlContent = await fs.promises.readFile(workspaceYamlPath, "utf-8");
244
+ const workspaceGlobs = parseWorkspaceGlobs(yamlContent);
245
+
246
+ for (const pattern of workspaceGlobs) {
247
+ const dirs = await glob(pattern, { cwd: projectRoot, absolute: true });
248
+ searchRoots.push(...dirs);
249
+ }
250
+ } catch {
251
+ // pnpm-workspace.yaml가 없으면 루트만 처리
252
+ }
253
+
254
+ // 2. 각 searchRoot의 node_modules에서 매칭되는 패키지 찾기
255
+ for (const searchRoot of searchRoots) {
256
+ const nodeModulesDir = path.join(searchRoot, "node_modules");
257
+
258
+ try {
259
+ await fs.promises.access(nodeModulesDir);
260
+ } catch {
261
+ continue; // node_modules 없으면 스킵
262
+ }
263
+
264
+ // replaceDeps의 각 glob 패턴으로 node_modules 내 디렉토리 탐색
265
+ const targetNames: string[] = [];
266
+ for (const pattern of Object.keys(replaceDeps)) {
267
+ const matches = await glob(pattern, { cwd: nodeModulesDir });
268
+ targetNames.push(...matches);
269
+ }
270
+
271
+ if (targetNames.length === 0) continue;
272
+
273
+ // 패턴 매칭 및 경로 해석
274
+ const matchedEntries = resolveReplaceDepEntries(replaceDeps, targetNames);
275
+
276
+ // 3. entry 정보 수집 (symlink 해석 포함)
277
+ for (const { targetName, sourcePath } of matchedEntries) {
278
+ const targetPath = path.join(nodeModulesDir, targetName);
279
+ const resolvedSourcePath = path.resolve(projectRoot, sourcePath);
280
+
281
+ // 소스 경로 존재 확인
282
+ try {
283
+ await fs.promises.access(resolvedSourcePath);
284
+ } catch {
285
+ logger.warn(`소스 경로가 존재하지 않아 스킵합니다: ${resolvedSourcePath}`);
286
+ continue;
287
+ }
288
+
289
+ // targetPath가 symlink면 realpath로 해석하여 실제 .pnpm 스토어 경로 얻기
290
+ let actualTargetPath = targetPath;
291
+ try {
292
+ const stat = await fs.promises.lstat(targetPath);
293
+ if (stat.isSymbolicLink()) {
294
+ actualTargetPath = await fs.promises.realpath(targetPath);
295
+ }
296
+ } catch {
297
+ // targetPath가 존재하지 않으면 그대로 사용
298
+ }
299
+
300
+ entries.push({
301
+ targetName,
302
+ sourcePath,
303
+ targetPath,
304
+ resolvedSourcePath,
305
+ actualTargetPath,
306
+ });
307
+ }
308
+ }
309
+
310
+ // 4. 소스 디렉토리 watch 설정
311
+ const watchers: FsWatcher[] = [];
312
+ const watchedSources = new Set<string>();
313
+
314
+ for (const entry of entries) {
315
+ if (watchedSources.has(entry.resolvedSourcePath)) continue;
316
+ watchedSources.add(entry.resolvedSourcePath);
317
+
318
+ const watcher = await FsWatcher.watch([entry.resolvedSourcePath], { followSymlinks: false });
319
+ watcher.onChange({ delay: 300 }, async (changeInfos) => {
320
+ for (const { path: changedPath } of changeInfos) {
321
+ // 제외 항목 필터링
322
+ const basename = path.basename(changedPath);
323
+ if (EXCLUDED_NAMES.has(basename)) continue;
324
+
325
+ // 이 소스 경로를 사용하는 모든 entry에 대해 복사
326
+ for (const e of entries) {
327
+ if (e.resolvedSourcePath !== entry.resolvedSourcePath) continue;
328
+
329
+ // 소스 경로 기준 상대 경로 계산
330
+ const relativePath = path.relative(e.resolvedSourcePath, changedPath);
331
+ const destPath = path.join(e.actualTargetPath, relativePath);
332
+
333
+ try {
334
+ // 소스가 존재하는지 확인
335
+ let sourceExists = false;
336
+ try {
337
+ await fs.promises.access(changedPath);
338
+ sourceExists = true;
339
+ } catch {
340
+ // 소스가 삭제됨
341
+ }
342
+
343
+ if (sourceExists) {
344
+ // 소스가 디렉토리인지 파일인지 확인
345
+ const stat = await fs.promises.stat(changedPath);
346
+ if (stat.isDirectory()) {
347
+ await fsMkdir(destPath);
348
+ } else {
349
+ await fsMkdir(path.dirname(destPath));
350
+ await fsCopy(changedPath, destPath, replaceDepsCopyFilter);
351
+ }
352
+ logger.info(`복사: ${relativePath} → ${e.targetName}`);
353
+ } else {
354
+ // 소스가 삭제됨 → 대상도 삭제
355
+ await fsRm(destPath);
356
+ logger.info(`삭제: ${relativePath} (${e.targetName})`);
357
+ }
358
+ } catch (err) {
359
+ logger.error(`복사 실패 (${e.targetName}/${relativePath}): ${err instanceof Error ? err.message : err}`);
360
+ }
361
+ }
362
+ }
363
+ });
364
+
365
+ watchers.push(watcher);
366
+ }
367
+
368
+ return {
369
+ entries,
370
+ dispose: () => {
371
+ for (const watcher of watchers) {
372
+ void watcher.close();
373
+ }
374
+ },
375
+ };
376
+ }
@@ -205,8 +205,10 @@ async function startWatch(info: ClientWatchInfo): Promise<void> {
205
205
  fs.mkdirSync(path.dirname(confDistPath), { recursive: true });
206
206
  fs.writeFileSync(confDistPath, JSON.stringify(info.config.configs ?? {}, undefined, 2));
207
207
 
208
- // 실제 할당된 포트 반환
209
- sender.send("serverReady", { port: viteServer.config.server.port });
208
+ // 실제 할당된 포트 반환 (config.server.port는 설정값이므로 httpServer에서 실제 포트를 가져옴)
209
+ const address = viteServer.httpServer?.address();
210
+ const actualPort = typeof address === "object" && address != null ? address.port : viteServer.config.server.port;
211
+ sender.send("serverReady", { port: actualPort });
210
212
  } catch (err) {
211
213
  sender.send("error", {
212
214
  message: err instanceof Error ? err.message : String(err),
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
7
- "@simplysm/solid": "~13.0.3",
7
+ "@simplysm/solid": "~13.0.8",
8
8
  {{#if router}}
9
9
  "@solidjs/router": "^0.15.4",
10
10
  {{/if}}
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
7
- "@simplysm/core-common": "~13.0.3",
8
- "@simplysm/service-server": "~13.0.3"
7
+ "@simplysm/core-common": "~13.0.8",
8
+ "@simplysm/service-server": "~13.0.8"
9
9
  }
10
10
  }
@@ -15,9 +15,9 @@
15
15
  "vitest": "vitest"
16
16
  },
17
17
  "devDependencies": {
18
- "@simplysm/sd-cli": "~13.0.3",
19
- "@simplysm/claude": "~13.0.3",
20
- "@simplysm/lint": "~13.0.3",
18
+ "@simplysm/sd-cli": "~13.0.8",
19
+ "@simplysm/claude": "~13.0.8",
20
+ "@simplysm/lint": "~13.0.8",
21
21
  "@types/node": "^20.19.33",
22
22
  "eslint": "^9.39.2",
23
23
  "prettier": "^3.8.1",