CI 가 tarball 을 풀어 node dist/index.js 를 바로 불렀다. 의존성이 없으니 ERR_MODULE_NOT_FOUND 로 죽는다 — 배포물의 결함이 아니라 검증 방법의 결함이다. npx 는 의존성을 설치한 뒤에 실행한다. 임시 프로젝트에 tarball 을 npm i 로 설치하고, 실제 사용자가 밟는 설치 -> doctor -> 제거 왕복을 그대로 돈다. SKILL.md 프론트매터가 --- 로 시작하는지도 확인한다(CRLF 로 깨지면 걸린다).
This commit is contained in:
parent
9093128f5e
commit
1a185df3df
1 changed files with 26 additions and 8 deletions
|
|
@ -45,15 +45,33 @@ jobs:
|
|||
- name: 배포물 점검 (npx 경로 검증)
|
||||
run: |
|
||||
node packages/cli/scripts/verify-package.mjs
|
||||
# 실제 사용자가 겪는 경로 그대로 확인한다 — tarball 을 만들어 설치까지 해본다
|
||||
|
||||
# 실제 사용자가 겪는 경로 그대로 확인한다.
|
||||
# tarball 을 풀어 `node dist/index.js` 를 바로 부르면 안 된다 —
|
||||
# 의존성이 없어서 ERR_MODULE_NOT_FOUND 로 죽고, 그건 배포물의 결함이
|
||||
# 아니라 검증 방법의 결함이다. npx 는 의존성을 설치한 뒤에 실행한다.
|
||||
cd packages/cli
|
||||
tarball="$(npm pack --silent)"
|
||||
tmp="$(mktemp -d)"
|
||||
tar -xzf "$tarball" -C "$tmp"
|
||||
test -f "$tmp/package/dist/skill/SKILL.md" || { echo "tarball 에 스킬이 없다" >&2; exit 1; }
|
||||
node "$tmp/package/dist/index.js" --version
|
||||
node "$tmp/package/dist/index.js" list
|
||||
rm -rf "$tmp" "$tarball"
|
||||
tarball="$(pwd)/$(npm pack --silent)"
|
||||
|
||||
# tarball 안에 스킬이 실렸는지 먼저 본다
|
||||
probe="$(mktemp -d)"
|
||||
tar -xzf "$tarball" -C "$probe"
|
||||
test -f "$probe/package/dist/skill/SKILL.md" || { echo "tarball 에 스킬이 없다" >&2; exit 1; }
|
||||
head -1 "$probe/package/dist/skill/SKILL.md" | grep -q '^---$' || { echo "SKILL.md 프론트매터가 깨졌다(줄바꿈 확인)" >&2; exit 1; }
|
||||
rm -rf "$probe"
|
||||
|
||||
# 설치 -> 실행 -> 제거 왕복
|
||||
sandbox="$(mktemp -d)"
|
||||
cd "$sandbox"
|
||||
npm init -y >/dev/null 2>&1
|
||||
npm i --no-audit --no-fund --silent "$tarball"
|
||||
npx --no-install designpaca --version
|
||||
npx --no-install designpaca install --target claude-code --scope project --yes
|
||||
test -f .claude/skills/designpaca/SKILL.md || { echo "설치 후 스킬이 없다" >&2; exit 1; }
|
||||
npx --no-install designpaca doctor
|
||||
npx --no-install designpaca uninstall --yes
|
||||
test ! -f .claude/skills/designpaca/SKILL.md || { echo "제거 후에도 파일이 남았다" >&2; exit 1; }
|
||||
cd / && rm -rf "$sandbox" "$tarball"
|
||||
|
||||
- name: 사이트 빌드
|
||||
run: pnpm build:site
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue