Static sites
A directory with no package.json is deployed as a static site: no install, no build. Every file is served at its path.
When a project is static
A directory without a package.json: a hand-written site, the output of another generator, or a dist/ folder you built yourself.
A directory with a package.json and none of Rasengan.js, Hono, Futon or Vite fails to build instead: deploying it as it is would publish your source code. Deploy its build output instead (see below).
What is never published
These files stay out of a static site, even when they're in the directory:
- anywhere:
.git,node_modules,.envand.env.*; - at the root:
package.json, lockfiles,pnpm-workspace.yaml,src/and.hiraiship/.
Symbolic links are not published either.
How files are served
/servesindex.html./about.htmlservesabout.html.- Clean URLs work:
/aboutfindsabout.htmlorabout/index.html. - A path with no matching file depends on what's at the root:
| Your output has | A path with no file gets |
|---|---|
a 404.html | 404.html, with a 404 status |
an index.html, and no 404.html | index.html, with a 200 status: single-page apps work |
| neither | a plain 404 |
A multi-page site should ship a 404.html: without one, a mistyped URL shows the home page.
Deploying a folder you built locally
To deploy the output of a build you ran yourself, deploy that folder:
The link to your project is then saved in dist/.hiraiship/. If your build deletes dist/, pass --project <slug> each time.
Ignore files are read from the folder you deploy, so your project's own .gitignore doesn't apply to ./dist. See Ignoring files.
Static means no build
A static project is never built: its build command and output directory are ignored, and the whole directory is published. To build with a tool Hiraiship doesn't detect, run the build yourself and deploy its output.