Skip to content

Commit 4e316ea

Browse files
committed
Prepare CLI package for npm
1 parent 79e91ec commit 4e316ea

9 files changed

Lines changed: 259 additions & 35 deletions

File tree

.github/workflows/ci.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,36 @@ jobs:
6262

6363
- name: Build web
6464
run: pnpm build:web
65+
66+
package:
67+
name: Package smoke test
68+
needs: test
69+
runs-on: ubuntu-latest
70+
timeout-minutes: 10
71+
72+
steps:
73+
- name: Checkout repository
74+
uses: actions/checkout@v4
75+
76+
- name: Install pnpm
77+
uses: pnpm/action-setup@v4
78+
with:
79+
version: 10.34.2
80+
run_install: false
81+
82+
- name: Set up Node.js
83+
uses: actions/setup-node@v4
84+
with:
85+
node-version: 20
86+
cache: pnpm
87+
88+
- name: Install dependencies
89+
run: pnpm install --frozen-lockfile
90+
91+
- name: Pack CLI
92+
run: pnpm --filter devmap pack --pack-destination artifacts
93+
94+
- name: Smoke test packed CLI
95+
run: |
96+
npm exec --yes --package ./artifacts/devmap-0.1.0.tgz -- devmap --version
97+
npm exec --yes --package ./artifacts/devmap-0.1.0.tgz -- devmap --help

docs/for-me-personal/DEBUG.md

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -362,14 +362,14 @@ menulis artifact project yang sama.
362362

363363
**Tanggal ditemukan:** 2026-06-10
364364

365-
**Status:** Belum diperbaiki.
365+
**Status:** Selesai.
366366

367367
### Gejala
368368

369369
Dry-run package:
370370

371371
```powershell
372-
pnpm --filter @devmap/cli pack --dry-run
372+
pnpm --filter devmap pack --dry-run
373373
```
374374

375375
menunjukkan tarball ikut membawa:
@@ -385,7 +385,7 @@ menunjukkan tarball ikut membawa:
385385

386386
Package CLI belum memiliki allowlist `files` atau `.npmignore` yang ketat.
387387

388-
### Rencana Solusi
388+
### Solusi
389389

390390
Gunakan allowlist pada `packages/cli/package.json`, misalnya:
391391

@@ -404,15 +404,17 @@ Tambahkan script `prepack` untuk memastikan build selalu dibuat sebelum tarball.
404404
Pastikan fixture `.env`, test, source development, dan snapshot lokal tidak
405405
masuk package.
406406

407-
### Verifikasi yang Diperlukan
407+
### Verifikasi
408408

409409
```powershell
410-
pnpm --filter @devmap/cli pack --dry-run
411-
npm install -g .\devmap-cli-*.tgz
412-
devmap --version
413-
devmap --help
410+
pnpm --filter devmap pack --pack-destination artifacts
411+
npm exec --yes --package .\artifacts\devmap-0.1.0.tgz -- devmap --version
412+
npm exec --yes --package .\artifacts\devmap-0.1.0.tgz -- devmap --help
414413
```
415414

415+
Tarball hanya berisi `dist`, `package.json`, `README.md`, dan `LICENSE`.
416+
Command versi dan help berhasil langsung dari tarball.
417+
416418
### Pelajaran
417419

418420
`.gitignore` tidak cukup untuk mengontrol isi package npm. Selalu periksa hasil
@@ -513,6 +515,49 @@ sebelum release dan jangan menjadikan preview model sebagai default.
513515

514516
---
515517

518+
## 10. Smoke Test npx Paralel Membaca Instalasi yang Belum Selesai
519+
520+
**Tanggal:** 2026-06-11
521+
522+
**Status:** Selesai.
523+
524+
### Gejala
525+
526+
`devmap --version` berhasil, tetapi `devmap --help` sempat gagal dengan:
527+
528+
```text
529+
ENOENT: no such file or directory, open '...\node_modules\devmap\dist\commands\init.js'
530+
```
531+
532+
### Akar Masalah
533+
534+
Dua command `npx` dijalankan paralel dan memakai cache `_npx` yang sama.
535+
Salah satu proses mulai menjalankan binary ketika proses lain masih menyiapkan
536+
isi package. Tarball dan instalasi akhirnya sama-sama memiliki `init.js`.
537+
538+
### Solusi
539+
540+
- Jalankan smoke test package secara berurutan.
541+
- Gunakan cache npm terpisah untuk setiap instalasi ketika perlu isolasi penuh.
542+
- Jangan menyimpulkan file tarball hilang sebelum memeriksa isi arsip dengan
543+
`tar -tf`.
544+
545+
### Verifikasi
546+
547+
```powershell
548+
npm exec --yes --cache "$env:TEMP\devmap-version" --package $tarball -- devmap --version
549+
npm exec --yes --cache "$env:TEMP\devmap-help" --package $tarball -- devmap --help
550+
```
551+
552+
Keduanya berhasil.
553+
554+
### Pelajaran
555+
556+
Package installation bukan operasi yang aman diparalelkan ketika proses berbagi
557+
cache yang sama. Smoke test distribusi harus deterministik dan berurutan.
558+
559+
---
560+
516561
## Checklist Saat Menambahkan Debug Baru
517562

518563
Tambahkan catatan baru ketika:

docs/for-me-personal/PROGRESS.md

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,20 @@ Terakhir diperbarui: 2026-06-11
7373
- Availability selected model ikut diperiksa.
7474
- Snapshot dibedakan menjadi valid, missing, corrupt, dan unsupported schema.
7575
- API key dan raw stack trace tidak pernah ditampilkan.
76-
- Automated test saat ini berjumlah 32 dan seluruhnya lulus.
76+
- Automated test saat ini berjumlah 33 dan seluruhnya lulus.
77+
78+
### Distribusi npm
79+
80+
- Package CLI publik sekarang bernama `devmap`, sedangkan root private workspace
81+
bernama `devmap-workspace`.
82+
- Allowlist package hanya memasukkan `dist`; npm tetap menyertakan
83+
`package.json`, `README.md`, dan `LICENSE`.
84+
- Script `prepack` selalu membangun CLI sebelum tarball dibuat.
85+
- Source, test, `.devmap`, fixture `.env`, dan fixture `node_modules` tidak lagi
86+
masuk tarball.
87+
- Tarball `devmap-0.1.0.tgz` berhasil dijalankan melalui `npm exec` untuk
88+
`devmap --version` dan `devmap --help`.
89+
- GitHub Actions memiliki package smoke test setelah seluruh matrix CI lulus.
7790

7891
### Cross-Platform CI
7992

@@ -99,9 +112,9 @@ Terakhir diperbarui: 2026-06-11
99112
### Prioritas Berikutnya
100113

101114
1. Pastikan rerun GitHub Actions hijau pada seluruh 9 kombinasi.
102-
2. Rapikan package npm dan verifikasi tarball sebelum publish.
103-
3. Tambahkan streaming output untuk jawaban AI.
104-
4. Lakukan manual verification Groq pada project nyata.
115+
2. Lakukan manual verification Groq pada project nyata.
116+
3. Benchmark Context Builder dengan minimal 20 pertanyaan.
117+
4. Tambahkan streaming output untuk jawaban AI jika waktu MVP masih tersedia.
105118

106119
## Status Saat Ini
107120

@@ -143,15 +156,15 @@ Saat ini CLI sudah bisa:
143156

144157
### Setup Package CLI
145158

146-
- Package CLI diganti namanya menjadi `@devmap/cli`.
159+
- Package CLI publik memakai nama `devmap` agar `npx devmap` bekerja.
147160
- Entry binary `devmap` ditambahkan dan diarahkan ke `./dist/index.js`.
148161
- Welcome screen aqua ditambahkan untuk command `devmap` tanpa argumen. Desainnya
149162
memakai ASCII wordmark DevMap sebagai brand signal, memakai warna truecolor
150163
`#2EE6D6`, lalu isi di bawahnya tetap ringkas dan command-focused.
151164
- Script package CLI ditambahkan:
152-
- `pnpm --filter @devmap/cli dev`
153-
- `pnpm --filter @devmap/cli build`
154-
- `pnpm --filter @devmap/cli test`
165+
- `pnpm --filter devmap dev`
166+
- `pnpm --filter devmap build`
167+
- `pnpm --filter devmap test`
155168
- `commander` dipasang di versi `^12.0.0` supaya tetap kompatibel dengan
156169
requirement Node.js 18+ yang tertulis di dokumentasi.
157170
- Node types ditambahkan ke `tsconfig.json` supaya TypeScript mengenali
@@ -179,9 +192,9 @@ Saat ini CLI sudah bisa:
179192
menambah framework test baru.
180193
- Script test CLI sekarang menjalankan unit/integration test dan TypeScript
181194
type-check:
182-
- `pnpm --filter @devmap/cli test`
183-
- `pnpm --filter @devmap/cli test:unit`
184-
- `pnpm --filter @devmap/cli test:types`
195+
- `pnpm --filter devmap test`
196+
- `pnpm --filter devmap test:unit`
197+
- `pnpm --filter devmap test:types`
185198
- Fixture Next.js mencakup:
186199
- App Router
187200
- import lokal dengan suffix `.js`
@@ -566,8 +579,8 @@ Mencakup:
566579
Pengecekan berikut sudah berhasil:
567580

568581
```bash
569-
pnpm --filter @devmap/cli test
570-
pnpm --filter @devmap/cli build
582+
pnpm --filter devmap test
583+
pnpm --filter devmap build
571584
pnpm --filter @devmap/web build
572585
node packages\cli\dist\index.js --help
573586
node packages\cli\dist\index.js init

docs/for-me-personal/TEST.md

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ pnpm test:cli
5454
Command tersebut menjalankan:
5555

5656
```powershell
57-
pnpm --filter @devmap/cli test:unit
58-
pnpm --filter @devmap/cli test:types
57+
pnpm --filter devmap test:unit
58+
pnpm --filter devmap test:types
5959
```
6060

6161
Saat ini test mencakup:
@@ -78,8 +78,8 @@ Saat ini test mencakup:
7878
Hasil minimum yang diharapkan:
7979

8080
```text
81-
tests 32
82-
pass 32
81+
tests 33
82+
pass 33
8383
fail 0
8484
```
8585

@@ -120,8 +120,8 @@ npx -p node@20 node packages\cli\node_modules\tsx\dist\cli.mjs packages\cli\test
120120
Hasil minimum yang diharapkan untuk keduanya:
121121

122122
```text
123-
tests 32
124-
pass 32
123+
tests 33
124+
pass 33
125125
fail 0
126126
```
127127

@@ -234,9 +234,12 @@ pnpm build:web
234234
Total job yang harus hijau:
235235

236236
```text
237-
9
237+
10
238238
```
239239

240+
Sembilan job berasal dari matrix OS/Node. Satu job tambahan membuat dan menguji
241+
tarball npm setelah seluruh matrix lulus.
242+
240243
## Development CLI Tanpa Build
241244

242245
Untuk menguji source terbaru tanpa build:
@@ -499,5 +502,32 @@ devmap doctor
499502
Untuk melepas link global:
500503

501504
```powershell
502-
npm unlink -g @devmap/cli
505+
npm unlink -g devmap
506+
```
507+
508+
## Testing Tarball npm
509+
510+
Buat package dari root repository:
511+
512+
```powershell
513+
pnpm --filter devmap pack --pack-destination artifacts
514+
```
515+
516+
Pastikan daftar file hanya berisi:
517+
518+
- `dist/`
519+
- `package.json`
520+
- `README.md`
521+
- `LICENSE`
522+
523+
Pastikan tidak ada `src/`, `test/`, `.devmap/`, `.env`, atau `node_modules/`.
524+
525+
Jalankan smoke test secara berurutan dengan cache terpisah:
526+
527+
```powershell
528+
$tarball = "C:\path\to\artifacts\devmap-0.1.0.tgz"
529+
npm exec --yes --cache "$env:TEMP\devmap-version" --package $tarball -- devmap --version
530+
npm exec --yes --cache "$env:TEMP\devmap-help" --package $tarball -- devmap --help
503531
```
532+
533+
Jangan menjalankan dua instalasi `npx` secara paralel dengan cache yang sama.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "devmap",
2+
"name": "devmap-workspace",
33
"private": true,
44
"version": "1.0.0",
55
"packageManager": "pnpm@10.34.2",
@@ -11,9 +11,9 @@
1111
"dev:web": "pnpm --filter @devmap/web dev",
1212
"build:web": "pnpm --filter @devmap/web build",
1313
"preview:web": "pnpm --filter @devmap/web preview",
14-
"dev:cli": "pnpm --filter @devmap/cli dev",
15-
"build:cli": "pnpm --filter @devmap/cli build",
16-
"test:cli": "pnpm --filter @devmap/cli test"
14+
"dev:cli": "pnpm --filter devmap dev",
15+
"build:cli": "pnpm --filter devmap build",
16+
"test:cli": "pnpm --filter devmap test"
1717
},
1818
"keywords": [
1919
"codebase",

packages/cli/LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Muhammad Fadil
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

packages/cli/README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# DevMap
2+
3+
Understand any codebase in minutes, not days.
4+
5+
## Install
6+
7+
```bash
8+
npm install --global devmap
9+
```
10+
11+
Or run it without a global install:
12+
13+
```bash
14+
npx devmap --help
15+
```
16+
17+
## Quick Start
18+
19+
```bash
20+
devmap init
21+
devmap analyze
22+
devmap ask "How does authentication work?"
23+
devmap doctor
24+
```
25+
26+
DevMap generates a reusable project snapshot at
27+
`.devmap/snapshot.json`. The snapshot combines static analysis with an optional
28+
Groq-powered architecture interpretation.
29+
30+
## Requirements
31+
32+
- Node.js 18 or newer
33+
- A Groq API key for AI-powered analysis and answers
34+
35+
Source code, documentation, and issue tracking are available at
36+
https://github.com/itsflaid/devmap.

0 commit comments

Comments
 (0)