11 ms·
i dont know why its a CLI when it could just be a js library? is there a more minimal version of this that can then be used more flexibly everywhere else?
by swyx 2y ago
i dont know why its a CLI when it could just be a js library? is there a more minimal version of this that can then be used more flexibly everywhere else?
- flysand7 2y agoI'm assuming it's because the project isn't meant to "Render" markdown, but provide a preview that works offline. That includes hot reloading when the original file changes, which you can't really do with just a client-side library. If it was a JS library in addition to providing you a webpage with js in it, it would also need to provide you with a server with a hot reload, and we're back to CLI. They are using goldmark library with some extensions[0] to render markdown. And there's also GitHub API for rendering markdown[1] if you're curious. References: [0]: https://github.com/thiagokokada/gh-gfm-preview/blob/main/internal/app/app.go#L59 https://github.com/thiagokokada/gh-gfm-preview/blob/main/int... [1]: https://docs.github.com/en/rest/markdown?apiVersion=2022-11-28 https://docs.github.com/en/rest/markdown?apiVersion=2022-11-...
- swyx 2y agofwiw there are plenty of webserver cli's with reload capability (https://www.npmjs.com/package/live-server https://www.npmjs.com/package/live-server or npx serve + chokidar), this is definitely one of those things that can decomposed to single responsibility tools (nit: hot reload means a specific thing in the js ecosystem and you prob dont mean that)
- kokada 2y agoSure, but using Node would mean losing the advantage of this being a single static binary. Not everyone has Node installed already.