@machetex/vite-plugin
v0.1.1
Published
Vite plugin for MacheteX — compile .mtcx entries through the machetex binary, serve them in Vite's dev server, and bundle them for production
Readme
@machetex/vite-plugin
Vite plugin for MacheteX — compiles
.mtcx pages through the machetex binary, serves them in Vite's dev server,
and bundles them for production.
Install
npm i -D vite @machetex/vite-pluginThe plugin ships with the machetex compiler as a dependency, so no extra
setup is needed. To override the binary (local build, different platform),
set MACHETEX_BIN or pass bin to the plugin.
Usage
// vite.config.js
import machetex from "@machetex/vite-plugin";
export default {
plugins: [machetex({ pagesDir: "src/pages" })],
};Options
| Option | Type | Meaning |
|--------|------|---------|
| entries | Record<string, string> | string | explicit route → page map ({ "/": "src/index.mtcx" }); a single string is a shorthand for { "/": value } |
| pagesDir | string | directory scanned for file-based routes (pagesDir: "src/pages" maps src/pages/index.mtcx → /, src/pages/demo/counter.mtcx → /demo/counter); names starting with _ or . are private and skipped |
| bin | string | path to the machetex binary (defaults to MACHETEX_BIN, the installed npm package, or system PATH) |
Pass entries or pagesDir, not both. Pages import their layouts explicitly
(Astro/Nuxt-style): a page can import a shell.mtcx, wrap its content in it,
and the shell's default slot (slot="…" for named slots) and props init(props)
shape the shared layout.
How it works
- Dev — a persistent
machetex --watch --jsonchild compiles each page and streams per-module build frames; modules are exposed to Vite under__mtx__/<route>/and the baked HTML is served through middleware, with full-reload and error overlays on rebuild. - Build — each entry is compiled once and its ES modules are bundled;
index.htmlis assembled ingenerateBundlewith hashed assets.
