{"_id":"@astlw/peekmd","_rev":"4-f4097a84fe9bfdf9df3a23b12244d6bb","name":"@astlw/peekmd","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@astlw/peekmd","version":"1.0.0","keywords":["markdown","markdown-server","markdown-preview","mermaid","cli","viewer","documentation","live-reload"],"author":{"name":"AST-LW"},"license":"MIT","_id":"@astlw/peekmd@1.0.0","maintainers":[{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"}],"homepage":"https://github.com/AST-LW/peekmd#readme","bugs":{"url":"https://github.com/AST-LW/peekmd/issues"},"bin":{"peekmd":"bin/peekmd.js"},"dist":{"shasum":"5c5e2813c7b9c85756feff79a0dc660a993b5c00","tarball":"https://registry.npmjs.org/@astlw/peekmd/-/peekmd-1.0.0.tgz","fileCount":9,"integrity":"sha512-q1sQS3iOFAWRyH/Ky+VlpXn+1/+VHv109GonTIkk2esmcLkDN5tDdlXo40gkH8SlQVKGCqJ6tUkdW1HdBS9wAg==","signatures":[{"sig":"MEYCIQDJAD54ex8OIHqXVPmbZcMXoKhm6BA6kB5s7IbmCM3TBwIhALHQu61zfOF6uR7WNCGD1ImIoeahDPbJ1OZKrpMICdKH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102517},"engines":{"node":">=18"},"gitHead":"8177180cb641bba5db1ffa5da4e9b9ac4473f3a7","private":false,"_npmUser":{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"},"repository":{"url":"git+https://github.com/AST-LW/peekmd.git","type":"git"},"_npmVersion":"10.9.2","description":"A CLI tool that renders Markdown files in the browser and live-reloads on every file save.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"ws":"^8.18.0","express":"^4.21.0","chokidar":"^3.6.0","picomatch":"^4.0.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/peekmd_1.0.0_1770564548064_0.38095138835599474","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@astlw/peekmd","version":"1.0.1","keywords":["markdown","markdown-server","markdown-preview","mermaid","cli","viewer","documentation","live-reload"],"author":{"name":"AST-LW"},"license":"MIT","_id":"@astlw/peekmd@1.0.1","maintainers":[{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"}],"homepage":"https://github.com/AST-LW/peekmd#readme","bugs":{"url":"https://github.com/AST-LW/peekmd/issues"},"bin":{"peekmd":"bin/peekmd.js"},"dist":{"shasum":"ff0821ffea3eb4f46a8f42c228eb47b2767426de","tarball":"https://registry.npmjs.org/@astlw/peekmd/-/peekmd-1.0.1.tgz","fileCount":9,"integrity":"sha512-A8vCanFAwSOlYnxU4JO7qVWlsSdUfzk0g+91UdAA7Mbr2pQCNXmEq69qeLreV9yDQBLw8LokmceABemNOz4Sdw==","signatures":[{"sig":"MEUCIQCGmzVWRfIP+h7Z7FT/3fPSKw4P62PtLsjf6eL+2mpJygIgHeu3unyo42xkVhCAYUQt5bTFZ54/QFHYnXmeiJwFvfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103300},"engines":{"node":">=18"},"gitHead":"5d6a7f11b5369642e73356da90d1c796b766b260","private":false,"_npmUser":{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"},"repository":{"url":"git+https://github.com/AST-LW/peekmd.git","type":"git"},"_npmVersion":"10.9.2","description":"A CLI tool that renders Markdown files in the browser and live-reloads on every file save.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"ws":"^8.18.0","express":"^4.21.0","chokidar":"^3.6.0","picomatch":"^4.0.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/peekmd_1.0.1_1770566893893_0.7366792410587628","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@astlw/peekmd","version":"1.0.2","keywords":["markdown","markdown-server","markdown-preview","mermaid","cli","viewer","documentation","live-reload"],"author":{"name":"AST-LW"},"license":"MIT","_id":"@astlw/peekmd@1.0.2","maintainers":[{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"}],"homepage":"https://github.com/AST-LW/peekmd#readme","bugs":{"url":"https://github.com/AST-LW/peekmd/issues"},"bin":{"peekmd":"bin/peekmd.js"},"dist":{"shasum":"72f7e28284cfef34b9d201fbf05de507bb228e3a","tarball":"https://registry.npmjs.org/@astlw/peekmd/-/peekmd-1.0.2.tgz","fileCount":9,"integrity":"sha512-HCUCWVbJOFXcdCvMx2DhWV4wfvOQGHqx9blEqu/jbIyrgHKjTLa4P51XpW0+UCWnRmkQEVUJZkMaoEHlSvFb0w==","signatures":[{"sig":"MEUCIEovhgVEunR+N87H1OHpMsTNxLUp0sZRtKM8323xAzoJAiEAyB/qs0Ec7dpNGczyWeiHr4AxqB0OsfnLInwDFVnYzts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103294},"engines":{"node":">=18"},"gitHead":"fdafd50f0dd2808856a94944b4356e195d9d2e39","private":false,"_npmUser":{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"},"repository":{"url":"git+https://github.com/AST-LW/peekmd.git","type":"git"},"_npmVersion":"10.9.2","description":"A CLI tool that renders Markdown files in the browser and live-reloads on every file save.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"ws":"^8.18.0","express":"^4.21.0","chokidar":"^3.6.0","picomatch":"^4.0.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/peekmd_1.0.2_1770567570521_0.7366890319088404","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@astlw/peekmd","version":"1.0.3","description":"A CLI tool that renders Markdown files in the browser and live-reloads on every file save.","author":{"name":"AST-LW"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/AST-LW/peekmd.git"},"homepage":"https://github.com/AST-LW/peekmd#readme","bugs":{"url":"https://github.com/AST-LW/peekmd/issues"},"bin":{"peekmd":"bin/peekmd.js"},"engines":{"node":">=18"},"keywords":["markdown","markdown-server","markdown-preview","mermaid","cli","viewer","documentation","live-reload"],"dependencies":{"chokidar":"^3.6.0","express":"^4.21.0","picomatch":"^4.0.3","ws":"^8.18.0"},"_id":"@astlw/peekmd@1.0.3","gitHead":"54081dd96339514d4bd310938c7cd36fefd1dbf3","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-me3VADANXFnj44olvHaRTmsVVt0cfGrpjc89AI8Jn1wWqteduh2x6PaY3XgOvnSdm3JLeiEDa9j8OTSaHe4IWQ==","shasum":"a1ee7b6803271d07b31134cb7d6a8dd5077f371e","tarball":"https://registry.npmjs.org/@astlw/peekmd/-/peekmd-1.0.3.tgz","fileCount":11,"unpackedSize":336752,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFcbKgQfnHxtrstKPY0aNq675TfmKBaYYH9e6TxotCurAiBCmr3wr9VsE5U991IZyXTmOejwXOQnoqBapbg5xi/NxA=="}]},"_npmUser":{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"},"directories":{},"maintainers":[{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/peekmd_1.0.3_1770922364978_0.8766879778380239"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-08T15:29:07.949Z","modified":"2026-02-12T18:52:45.378Z","1.0.0":"2026-02-08T15:29:08.230Z","1.0.1":"2026-02-08T16:08:14.029Z","1.0.2":"2026-02-08T16:19:30.674Z","1.0.3":"2026-02-12T18:52:45.198Z"},"bugs":{"url":"https://github.com/AST-LW/peekmd/issues"},"author":{"name":"AST-LW"},"license":"MIT","homepage":"https://github.com/AST-LW/peekmd#readme","keywords":["markdown","markdown-server","markdown-preview","mermaid","cli","viewer","documentation","live-reload"],"repository":{"type":"git","url":"git+https://github.com/AST-LW/peekmd.git"},"description":"A CLI tool that renders Markdown files in the browser and live-reloads on every file save.","maintainers":[{"name":"ast-lw","email":"walkthroughfrom2020@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"./src/public/assets/title.png\" alt=\"Peek MD\" width=\"400\">\n</p>\n\n## Preview\n\n![Home Page](./src/public/assets/home_page.png)\n\n## Install\n\n```bash\nnpm i -g @astlw/peekmd\n```\n\nRequires Node.js 18+.\n\n## Features\n\n| Feature                      | Summary                                                                                                                      | Why it matters                                                      |\n| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |\n| Live reload                  | Real-time file events over WebSocket; open file preview refreshes on `add`/`change`/`unlink`.                                | Instant feedback while editing files.                               |\n| Folder groups (multi-folder) | Sidebar shows each linked folder as a separate group; when folder basenames collide a compact path is shown to disambiguate. | Keep multiple projects side-by-side without confusion.              |\n| File tree                    | Per-folder collapsible file tree with relative paths; click a file to render Markdown in the preview.                        | Fast navigation and focused previews.                               |\n| Ignore patterns (glob)       | Glob-only patterns (picomatch) applied to watcher, search, and tree.                                                         | Simple, consistent filtering across the app. Quote globs in shells. |\n| Search                       | Lightweight full-text substring search across filenames and file contents.                                                   | Fast, low-overhead lookup for most small/medium projects.           |\n| Markdown + Mermaid           | Renders GFM and client-side Mermaid diagrams inside `mermaid` fences.                                                        | Rich previews without server-side rendering.                        |\n| Daemon & CLI                 | Start/stop/status plus `--json` machine-readable output for scripts and agents.                                              | Integrates with workflows and automation.                           |\n\n## Config\n\nLinked folders and ignore patterns are stored in:\n\n```\n~/.peekmd.json\n```\n\n```json\n{\n    \"folders\": [\"/Users/you/docs\", \"/Users/you/notes\"],\n    \"ignore\": [\"**/node_modules/**\", \"**/dist/**\", \"**/*.draft.md\"]\n}\n```\n\nCreated automatically on first use. Can be edited manually.\n\n## CLI Commands\n\n```bash\n# Server\npeekmd start                        # start server (daemon)\npeekmd stop                         # stop server\npeekmd status                       # check server status\npeekmd open                         # open browser (starts server if not running)\nPORT=3000 peekmd start              # custom port (default: 4000)\n\n# Folder management\npeekmd link <dir> [dir2] ...        # persist folders to config\npeekmd unlink <dir> [dir2] ...      # remove folders from config\npeekmd list                         # show linked folders\n\n# Ignore patterns (glob syntax)\npeekmd ignore <pattern> ...         # ignore folders/files by glob pattern\npeekmd unignore <pattern> ...       # remove an ignore pattern\npeekmd ignored                      # show all active ignore patterns\n\n# Structured Output (Useful for integrating with scripts or other tools)\npeekmd list --json                  # linked folders as JSON\npeekmd ignored --json               # ignore patterns as JSON\npeekmd status --json                # server status as JSON\npeekmd search <query>               # search files and content (JSON)\npeekmd files                        # list all markdown files (JSON)\n\npeekmd --help                       # print help\n```\n\n### Ignore Patterns\n\nIgnore patterns let you exclude folders or files from the file tree, search, and live-reload.\nPatterns are stored in `~/.peekmd.json` and apply globally.\nAll patterns use glob syntax (picomatch).\n\nExamples:\n\n```bash\npeekmd ignore \"**/node_modules/**\"         # ignores all node_modules folders\npeekmd ignore \"**/dist/**\" \"**/build/**\"   # ignore multiple patterns\npeekmd ignore \"**/*.draft.md\"              # ignores all .draft.md files\npeekmd ignore \"docs/private/**\"            # ignores everything under docs/private\npeekmd ignore \"*.tmp\"                      # ignores .tmp files at any depth\n```\n\n#### How they work:\n\nIgnore patterns are global and applied to every linked folder. Each pattern is tested against the file path **relative to that folder’s root**.\n\n| Linked Folder        | File Path                              | Relative Path               | Pattern              | Matches |\n| -------------------- | -------------------------------------- | --------------------------- | -------------------- | ------- |\n| `/Users/you/project` | `/Users/you/project/docs/private/a.md` | `docs/private/a.md`         | `docs/private/**`    | ✅ Yes  |\n| `/Users/you/project` | `/Users/you/project/README.md`         | `README.md`                 | `docs/private/**`    | ❌ No   |\n| `/Users/you`         | `/Users/you/project/docs/private/a.md` | `project/docs/private/a.md` | `docs/private/**`    | ❌ No   |\n| `/Users/you`         | `/Users/you/project/docs/private/a.md` | `project/docs/private/a.md` | `**/docs/private/**` | ✅ Yes  |\n| `/Users/you/project` | `/Users/you/project/build/tmp.log`     | `build/tmp.log`             | `**/build/**`        | ✅ Yes  |\n| `/Users/you/project` | `/Users/you/project/src/file.draft.md` | `src/file.draft.md`         | `**/*.draft.md`      | ✅ Yes  |\n| `/Users/you/project` | `/Users/you/project/foo.tmp`           | `foo.tmp`                   | `**/*.tmp`           | ✅ Yes  |\n\n#### Default patterns (applied automatically):\n\n```\n**/node_modules/**\n**/.git/**\n**/dist/**\n**/build/**\n**/.next/**\n**/__pycache__/**\n...\n```\n\n### NOTE\n\n- Ignore patterns are glob-only (picomatch). Regex/exact-name modes are not supported.\n- Search is intentionally simple (substring per-line) for clarity and low resource usage.\n","readmeFilename":"README.md"}