nitro 3.0.1-alpha.2 → 3.0.260415-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/LICENSE +6 -0
  2. package/README.md +2 -2
  3. package/dist/THIRD-PARTY-LICENSES.md +1646 -0
  4. package/dist/_build/common.mjs +7261 -3812
  5. package/dist/_build/rolldown.mjs +32 -42
  6. package/dist/_build/rollup.mjs +28 -48
  7. package/dist/_build/vite.build.mjs +10 -10
  8. package/dist/_chunks/nitro.mjs +102 -327
  9. package/dist/_chunks/nitro2.mjs +8 -9
  10. package/dist/_chunks/nitro3.mjs +136 -0
  11. package/dist/_chunks/nitro4.mjs +127 -0
  12. package/dist/_chunks/utils.mjs +40 -29
  13. package/dist/_common.mjs +13 -25
  14. package/dist/_dev.d.mts +0 -3
  15. package/dist/{_chunks/dev.mjs → _dev.mjs} +132 -330
  16. package/dist/_libs/_.mjs +2 -0
  17. package/dist/_libs/_2.mjs +2 -0
  18. package/dist/_libs/_3.mjs +2 -0
  19. package/dist/_libs/_4.mjs +2 -0
  20. package/dist/_libs/_5.mjs +2 -0
  21. package/dist/_libs/_6.mjs +2 -0
  22. package/dist/_libs/_7.mjs +2 -0
  23. package/dist/_libs/c12+rc9.mjs +814 -0
  24. package/dist/_libs/{c12+giget+readdirp+chokidar.d.mts → c12+readdirp+chokidar.d.mts} +49 -40
  25. package/dist/_libs/citty.mjs +142 -41
  26. package/dist/_libs/commondir+is-reference.mjs +60 -56
  27. package/dist/_libs/compatx.d.mts +0 -2
  28. package/dist/_libs/compatx.mjs +1 -4
  29. package/dist/_libs/esbuild.d.mts +0 -1
  30. package/dist/_libs/escape-string-regexp.mjs +1 -4
  31. package/dist/_libs/{pluginutils+plugin-commonjs.d.mts → estree+pluginutils.d.mts} +0 -5
  32. package/dist/_libs/estree-walker.mjs +4 -92
  33. package/dist/_libs/exsolve.d.mts +1 -0
  34. package/dist/_libs/hasown+resolve+deepmerge.mjs +160 -246
  35. package/dist/_libs/httpxy.d.mts +20 -13
  36. package/dist/_libs/httpxy.mjs +519 -95
  37. package/dist/_libs/js-tokens.d.mts +1 -0
  38. package/dist/_libs/klona.mjs +1 -4
  39. package/dist/_libs/magic-string.d.mts +0 -2
  40. package/dist/_libs/mlly.d.mts +0 -2
  41. package/dist/_libs/nypm+tinyexec.mjs +822 -0
  42. package/dist/_libs/perfect-debounce.mjs +68 -0
  43. package/dist/_libs/pkg-types.d.mts +0 -3
  44. package/dist/_libs/plugin-alias.mjs +1 -5
  45. package/dist/_libs/plugin-inject.mjs +1 -7
  46. package/dist/_libs/plugin-json.mjs +1 -5
  47. package/dist/_libs/pluginutils.mjs +3 -35
  48. package/dist/_libs/readdirp+chokidar.mjs +187 -365
  49. package/dist/_libs/remapping.mjs +1 -5
  50. package/dist/_libs/resolve-uri+gen-mapping.mjs +15 -53
  51. package/dist/_libs/rou3.d.mts +1 -4
  52. package/dist/_libs/rou3.mjs +223 -78
  53. package/dist/_libs/std-env.d.mts +8 -2
  54. package/dist/_libs/strip-literal.d.mts +1 -0
  55. package/dist/_libs/tsconfck.mjs +21 -334
  56. package/dist/_libs/ultrahtml.mjs +3 -16
  57. package/dist/_libs/unimport+unplugin.mjs +244 -388
  58. package/dist/_libs/unplugin+unimport.d.mts +5 -15
  59. package/dist/_libs/unwasm.d.mts +0 -3
  60. package/dist/_presets.mjs +576 -488
  61. package/dist/builder.d.mts +5 -25
  62. package/dist/builder.mjs +3 -8
  63. package/dist/cli/_chunks/build.mjs +22 -25
  64. package/dist/cli/_chunks/common.mjs +1 -4
  65. package/dist/cli/_chunks/deploy.mjs +37 -0
  66. package/dist/cli/_chunks/dev.mjs +6 -11
  67. package/dist/cli/_chunks/docs.mjs +28 -0
  68. package/dist/cli/_chunks/list.mjs +4 -8
  69. package/dist/cli/_chunks/prepare.mjs +2 -6
  70. package/dist/cli/_chunks/preview.mjs +48 -0
  71. package/dist/cli/_chunks/run.mjs +7 -11
  72. package/dist/cli/_chunks/task.mjs +1 -5
  73. package/dist/cli/index.mjs +5 -6
  74. package/dist/docs/0.docs/0.index/index.md +56 -0
  75. package/dist/docs/0.docs/1.quick-start.md +110 -0
  76. package/dist/docs/0.docs/10.lifecycle.md +204 -0
  77. package/dist/docs/0.docs/11.openapi.md +291 -0
  78. package/dist/docs/0.docs/12.plugins.md +164 -0
  79. package/dist/docs/0.docs/13.tasks.md +277 -0
  80. package/dist/docs/0.docs/14.websocket.md +386 -0
  81. package/dist/docs/0.docs/15.migration.md +213 -0
  82. package/dist/docs/0.docs/16.nightly.md +31 -0
  83. package/dist/docs/0.docs/2.renderer.md +322 -0
  84. package/dist/docs/0.docs/3.routing.md +711 -0
  85. package/dist/docs/0.docs/4.server-entry.md +239 -0
  86. package/dist/docs/0.docs/5.cache.md +408 -0
  87. package/dist/docs/0.docs/6.storage.md +261 -0
  88. package/dist/docs/0.docs/7.assets.md +166 -0
  89. package/dist/docs/0.docs/8.configuration.md +256 -0
  90. package/dist/docs/0.docs/9.database.md +185 -0
  91. package/dist/docs/1.deploy/0.index/index.md +64 -0
  92. package/dist/docs/1.deploy/1.runtimes/0.node.md +63 -0
  93. package/dist/docs/1.deploy/1.runtimes/1.bun.md +15 -0
  94. package/dist/docs/1.deploy/1.runtimes/2.deno.md +19 -0
  95. package/dist/docs/1.deploy/2.providers/0.alwaysdata.md +50 -0
  96. package/dist/docs/1.deploy/2.providers/1.aws.md +47 -0
  97. package/dist/docs/1.deploy/2.providers/10.flightcontrol.md +67 -0
  98. package/dist/docs/1.deploy/2.providers/11.genezio.md +67 -0
  99. package/dist/docs/1.deploy/2.providers/12.github-pages.md +68 -0
  100. package/dist/docs/1.deploy/2.providers/13.gitlab-pages.md +37 -0
  101. package/dist/docs/1.deploy/2.providers/14.heroku.md +84 -0
  102. package/dist/docs/1.deploy/2.providers/15.iis.md +38 -0
  103. package/dist/docs/1.deploy/2.providers/16.koyeb.md +109 -0
  104. package/dist/docs/1.deploy/2.providers/17.netlify.md +47 -0
  105. package/dist/docs/1.deploy/2.providers/18.platform-sh.md +37 -0
  106. package/dist/docs/1.deploy/2.providers/19.render.md +37 -0
  107. package/dist/docs/1.deploy/2.providers/2.aws-amplify.md +81 -0
  108. package/dist/docs/1.deploy/2.providers/20.stormkit.md +24 -0
  109. package/dist/docs/1.deploy/2.providers/21.vercel.md +270 -0
  110. package/dist/docs/1.deploy/2.providers/22.zeabur.md +19 -0
  111. package/dist/docs/1.deploy/2.providers/23.zephyr.md +99 -0
  112. package/dist/docs/1.deploy/2.providers/24.zerops.md +102 -0
  113. package/dist/docs/1.deploy/2.providers/3.azure.md +72 -0
  114. package/dist/docs/1.deploy/2.providers/4.cleavr.md +33 -0
  115. package/dist/docs/1.deploy/2.providers/5.cloudflare.md +369 -0
  116. package/dist/docs/1.deploy/2.providers/6.deno-deploy.md +66 -0
  117. package/dist/docs/1.deploy/2.providers/7.digitalocean.md +46 -0
  118. package/dist/docs/1.deploy/2.providers/8.edgeone.md +20 -0
  119. package/dist/docs/1.deploy/2.providers/9.firebase.md +32 -0
  120. package/dist/docs/2.config/0.index/index.md +1221 -0
  121. package/dist/docs/3.examples/0.index/index.md +3 -0
  122. package/dist/docs/3.examples/1.api-routes.md +145 -0
  123. package/dist/docs/3.examples/10.hono.md +74 -0
  124. package/dist/docs/3.examples/11.import-alias.md +97 -0
  125. package/dist/docs/3.examples/12.middleware.md +91 -0
  126. package/dist/docs/3.examples/13.mono-jsx.md +68 -0
  127. package/dist/docs/3.examples/14.nano-jsx.md +70 -0
  128. package/dist/docs/3.examples/15.plugins.md +91 -0
  129. package/dist/docs/3.examples/16.renderer.md +113 -0
  130. package/dist/docs/3.examples/17.runtime-config.md +97 -0
  131. package/dist/docs/3.examples/18.server-fetch.md +87 -0
  132. package/dist/docs/3.examples/19.shiki.md +198 -0
  133. package/dist/docs/3.examples/2.auto-imports.md +92 -0
  134. package/dist/docs/3.examples/20.virtual-routes.md +74 -0
  135. package/dist/docs/3.examples/21.vite-nitro-plugin.md +79 -0
  136. package/dist/docs/3.examples/22.vite-rsc.md +1041 -0
  137. package/dist/docs/3.examples/23.vite-ssr-html.md +217 -0
  138. package/dist/docs/3.examples/24.vite-ssr-preact.md +247 -0
  139. package/dist/docs/3.examples/25.vite-ssr-react.md +226 -0
  140. package/dist/docs/3.examples/26.vite-ssr-solid.md +256 -0
  141. package/dist/docs/3.examples/27.vite-ssr-tsr-react.md +442 -0
  142. package/dist/docs/3.examples/28.vite-ssr-tss-react.md +444 -0
  143. package/dist/docs/3.examples/29.vite-ssr-vue-router.md +617 -0
  144. package/dist/docs/3.examples/3.cached-handler.md +81 -0
  145. package/dist/docs/3.examples/30.vite-trpc.md +335 -0
  146. package/dist/docs/3.examples/31.websocket.md +282 -0
  147. package/dist/docs/3.examples/4.custom-error-handler.md +98 -0
  148. package/dist/docs/3.examples/5.database.md +157 -0
  149. package/dist/docs/3.examples/6.elysia.md +70 -0
  150. package/dist/docs/3.examples/7.express.md +78 -0
  151. package/dist/docs/3.examples/8.fastify.md +79 -0
  152. package/dist/docs/3.examples/9.hello-world.md +68 -0
  153. package/dist/docs/README.md +86 -0
  154. package/dist/docs/index.md +121 -0
  155. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +8 -0
  156. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  157. package/dist/node_modules/@speed-highlight/core/dist/index.js +4 -4
  158. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  159. package/dist/node_modules/@speed-highlight/core/package.json +1 -1
  160. package/dist/node_modules/cookie-es/dist/index.mjs +299 -250
  161. package/dist/node_modules/cookie-es/package.json +26 -23
  162. package/dist/node_modules/croner/dist/croner.js +1 -1
  163. package/dist/node_modules/croner/package.json +11 -1
  164. package/dist/node_modules/defu/dist/defu.mjs +2 -2
  165. package/dist/node_modules/defu/package.json +33 -28
  166. package/dist/node_modules/rendu/dist/_chunks/libs/cookie-es.mjs +151 -0
  167. package/dist/node_modules/rendu/dist/index.mjs +5 -112
  168. package/dist/node_modules/rendu/package.json +25 -24
  169. package/dist/node_modules/youch/build/helpers-B9BQYaS6.js +23 -0
  170. package/dist/node_modules/youch/build/index.js +204 -351
  171. package/dist/node_modules/youch/build/public/error_info/script.js +1 -1
  172. package/dist/node_modules/youch/build/public_dir-C5bujZKB.js +25 -0
  173. package/dist/node_modules/youch/build/src/templates/error_cause/main.js +44 -0
  174. package/dist/node_modules/youch/build/src/templates/error_info/main.js +72 -0
  175. package/dist/node_modules/youch/build/src/templates/error_metadata/main.js +65 -0
  176. package/dist/node_modules/youch/build/src/templates/error_stack/main.js +152 -0
  177. package/dist/node_modules/youch/build/src/templates/error_stack_source/main.js +46 -0
  178. package/dist/node_modules/youch/build/src/templates/header/main.js +24 -0
  179. package/dist/node_modules/youch/build/src/templates/layout/main.js +27 -0
  180. package/dist/node_modules/youch/package.json +35 -32
  181. package/dist/presets/_nitro/runtime/nitro-dev.mjs +12 -57
  182. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +1 -0
  183. package/dist/presets/_nitro/runtime/service-worker.mjs +1 -2
  184. package/dist/presets/aws-lambda/runtime/_utils.mjs +6 -6
  185. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +3 -1
  186. package/dist/presets/azure/runtime/_utils.mjs +5 -5
  187. package/dist/presets/azure/runtime/azure-swa.mjs +5 -5
  188. package/dist/presets/bun/runtime/bun.mjs +9 -6
  189. package/dist/presets/cloudflare/runtime/_module-handler.mjs +1 -1
  190. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +4 -4
  191. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +3 -3
  192. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +2 -2
  193. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +10 -21
  194. package/dist/presets/deno/runtime/deno-deploy.mjs +4 -4
  195. package/dist/presets/deno/runtime/deno-server.mjs +9 -6
  196. package/dist/presets/edgeone/runtime/edgeone.mjs +10 -0
  197. package/dist/presets/netlify/runtime/netlify-edge.mjs +2 -3
  198. package/dist/presets/netlify/runtime/netlify.mjs +1 -1
  199. package/dist/presets/node/runtime/node-cluster.mjs +5 -4
  200. package/dist/presets/node/runtime/node-middleware.mjs +1 -1
  201. package/dist/presets/node/runtime/node-server.mjs +8 -5
  202. package/dist/presets/stormkit/runtime/stormkit.mjs +1 -2
  203. package/dist/presets/vercel/runtime/cron-handler.mjs +25 -0
  204. package/dist/presets/vercel/runtime/queue-handler.mjs +21 -0
  205. package/dist/presets/vercel/runtime/vercel.node.mjs +3 -3
  206. package/dist/presets/vercel/runtime/vercel.web.mjs +3 -5
  207. package/dist/presets/winterjs/runtime/winterjs.mjs +10 -10
  208. package/dist/presets/zephyr/runtime/server.mjs +3 -0
  209. package/dist/runtime/internal/app.mjs +12 -11
  210. package/dist/runtime/internal/cache.d.mts +0 -4
  211. package/dist/runtime/internal/cache.mjs +32 -256
  212. package/dist/runtime/internal/context.d.mts +3 -1
  213. package/dist/runtime/internal/context.mjs +1 -9
  214. package/dist/runtime/internal/error/dev.d.mts +5 -4
  215. package/dist/runtime/internal/error/dev.mjs +47 -49
  216. package/dist/runtime/internal/error/hooks.d.mts +1 -1
  217. package/dist/runtime/internal/error/prod.d.mts +2 -5
  218. package/dist/runtime/internal/error/prod.mjs +19 -33
  219. package/dist/runtime/internal/error/utils.d.mts +4 -4
  220. package/dist/runtime/internal/meta.d.mts +1 -1
  221. package/dist/runtime/internal/plugin.d.mts +2 -2
  222. package/dist/runtime/internal/route-rules.d.mts +11 -4
  223. package/dist/runtime/internal/route-rules.mjs +15 -5
  224. package/dist/runtime/internal/routes/dev-tasks.d.mts +3 -2
  225. package/dist/runtime/internal/routes/dev-tasks.mjs +15 -10
  226. package/dist/runtime/internal/routes/openapi.mjs +2 -2
  227. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  228. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +2 -1
  229. package/dist/runtime/internal/routes/scalar.mjs +3 -3
  230. package/dist/runtime/internal/routes/swagger.mjs +7 -4
  231. package/dist/runtime/internal/runtime-config.d.mts +1 -1
  232. package/dist/runtime/internal/runtime-config.mjs +2 -2
  233. package/dist/runtime/internal/static.mjs +5 -4
  234. package/dist/runtime/internal/task.d.mts +3 -1
  235. package/dist/runtime/internal/task.mjs +7 -7
  236. package/dist/runtime/internal/vite/dev-entry.mjs +6 -3
  237. package/dist/runtime/internal/vite/dev-worker.mjs +264 -0
  238. package/dist/runtime/meta.d.mts +1 -0
  239. package/dist/runtime/meta.mjs +2 -0
  240. package/dist/runtime/nitro.d.mts +2 -0
  241. package/dist/runtime/nitro.mjs +4 -2
  242. package/dist/runtime/virtual/error-handler.mjs +1 -1
  243. package/dist/runtime/virtual/renderer-template.mjs +1 -1
  244. package/dist/runtime/virtual/server-assets.d.mts +2 -1
  245. package/dist/runtime/virtual/tracing.d.mts +5 -0
  246. package/dist/runtime/virtual/tracing.mjs +1 -0
  247. package/dist/runtime/vite.d.mts +1 -1
  248. package/dist/types/index.d.mts +215 -195
  249. package/dist/types/index.mjs +1 -11
  250. package/dist/vite.d.mts +3 -8
  251. package/dist/vite.mjs +285 -253
  252. package/lib/tsconfig.json +3 -5
  253. package/package.json +97 -80
  254. package/dist/_libs/confbox.mjs +0 -2509
  255. package/dist/_libs/nypm+giget+tinyexec.mjs +0 -3603
  256. package/dist/_libs/rc9+c12+dotenv.mjs +0 -972
  257. package/dist/node_modules/hookable/dist/index.mjs +0 -266
  258. package/dist/node_modules/hookable/package.json +0 -52
  259. package/dist/node_modules/youch/build/chunk-4L7RY2JA.js +0 -42
  260. package/dist/node_modules/youch/build/chunk-7QV3D5YX.js +0 -83
  261. package/dist/node_modules/youch/build/chunk-AUGPHE32.js +0 -39
  262. package/dist/node_modules/youch/build/chunk-CM7DWJNZ.js +0 -44
  263. package/dist/node_modules/youch/build/chunk-EJH674NB.js +0 -223
  264. package/dist/node_modules/youch/build/chunk-OIJ3WD7L.js +0 -81
  265. package/dist/node_modules/youch/build/chunk-P36L72PL.js +0 -87
  266. package/dist/node_modules/youch/build/chunk-PE3GG3TN.js +0 -65
  267. package/dist/node_modules/youch/build/chunk-X53OIOJH.js +0 -70
  268. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +0 -2
  269. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +0 -3
  270. package/dist/presets/_nitro/runtime/service-worker.d.mts +0 -2
  271. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +0 -2
  272. package/dist/presets/aws-lambda/runtime/_utils.d.mts +0 -8
  273. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +0 -2
  274. package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +0 -3
  275. package/dist/presets/azure/runtime/_utils.d.mts +0 -2
  276. package/dist/presets/azure/runtime/azure-swa.d.mts +0 -5
  277. package/dist/presets/bun/runtime/bun.d.mts +0 -3
  278. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +0 -16
  279. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +0 -11
  280. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +0 -3
  281. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +0 -20
  282. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +0 -3
  283. package/dist/presets/deno/runtime/deno-deploy.d.mts +0 -5
  284. package/dist/presets/deno/runtime/deno-server.d.mts +0 -3
  285. package/dist/presets/netlify/runtime/netlify-edge.d.mts +0 -3
  286. package/dist/presets/netlify/runtime/netlify.d.mts +0 -4
  287. package/dist/presets/node/runtime/node-cluster.d.mts +0 -3
  288. package/dist/presets/node/runtime/node-middleware.d.mts +0 -3
  289. package/dist/presets/node/runtime/node-server.d.mts +0 -3
  290. package/dist/presets/standard/runtime/server.d.mts +0 -3
  291. package/dist/presets/stormkit/runtime/stormkit.d.mts +0 -21
  292. package/dist/presets/vercel/runtime/isr.d.mts +0 -2
  293. package/dist/presets/vercel/runtime/vercel.node.d.mts +0 -3
  294. package/dist/presets/vercel/runtime/vercel.web.d.mts +0 -8
  295. package/dist/presets/winterjs/runtime/winterjs.d.mts +0 -2
  296. package/dist/presets/zeabur/runtime/zeabur.d.mts +0 -3
  297. package/dist/runtime/internal/vite/node-runner.mjs +0 -359
@@ -0,0 +1,84 @@
1
+ # Heroku
2
+
3
+ > Deploy Nitro apps to Heroku.
4
+
5
+ **Preset:** `heroku`
6
+
7
+ <read-more></read-more>
8
+
9
+ ## Using the heroku CLI
10
+
11
+ 1. Create a new Heroku app.
12
+
13
+ ```bash
14
+ heroku create myapp
15
+ ```
16
+
17
+ 2. Configure Heroku to use the nodejs buildpack.
18
+
19
+ ```bash
20
+ heroku buildpacks:set heroku/nodejs
21
+ ```
22
+
23
+ 3. Configure your app.
24
+
25
+ ```bash
26
+ heroku config:set NITRO_PRESET=heroku
27
+ ```
28
+
29
+ 4. Ensure you have `start` and `build` commands in your `package.json` file.
30
+
31
+ ```json5
32
+ "scripts": {
33
+ "build": "nitro build", // or `nuxt build` if using nuxt
34
+ "start": "node .output/server/index.mjs"
35
+ }
36
+ ```
37
+
38
+
39
+ ## With nginx
40
+
41
+ 1. Add the heroku Nginx buildpack [here](https://github.com/heroku/heroku-buildpack-nginx.git)
42
+
43
+ 2. Change to the 'node' preset in your `nitro.config`
44
+
45
+ ```json5
46
+ "nitro": {
47
+ "preset":"node",
48
+ }
49
+ ```
50
+
51
+ 3. From the **Existing app** section of buildpack doc, 2 key steps are required to get things running
52
+
53
+ Step 1: Listen on a socket at 'tmp/nginx.socket'
54
+ Step 2: Create a file '/tmp/app-initialized' when your app is ready to accept connections
55
+
56
+ 4. Create custom app runner, eg: apprunner.mjs at the root of the project (or any other preferred location), in this file, create a server, using the listener generated by the node preset, then listen on the socket as detailed in the buildpack doc
57
+
58
+ ```ts
59
+ import { createServer } from 'node:http'
60
+ import { listener } from './.output/server/index.mjs'
61
+
62
+ const server = createServer(listener)
63
+
64
+ server.listen('/tmp/nginx.socket') //following the buildpack doc
65
+ ```
66
+
67
+ 5. To create the 'tmp/app-initialized' file, use a nitro plugin, create file 'initServer.ts' at the root of the project (or any other preferred location)
68
+
69
+ ```ts
70
+ import fs from "fs"
71
+
72
+ export default definePlugin((nitroApp) => {
73
+ if((process.env.NODE_ENV || 'development') != 'development') {
74
+ fs.openSync('/tmp/app-initialized', 'w')
75
+ }
76
+ })
77
+ ```
78
+
79
+ 6. Finally, create file 'Procfile' at the root of the project, with the Procfile, we tell heroku to start nginx and use the custom apprunner.mjs to start the server
80
+
81
+ web: bin/start-nginx node apprunner.mjs
82
+
83
+ 7. Bonus: create file 'config/nginx.conf.erb' to customize your nginx config. With the node preset, by default, static files handlers will not be generated, you can use nginx to server static files, just add the right location rule to the server block(s), or, force the node preset to generate handlers for the static files by setting serveStatic to true.
84
+
@@ -0,0 +1,38 @@
1
+ # IIS
2
+
3
+ > Deploy Nitro apps to IIS.
4
+
5
+ ## Using [IISnode](https://github.com/Azure/iisnode)
6
+
7
+ **Preset:** `iis_node`
8
+
9
+ 1. Install the latest LTS version of [Node.js](https://nodejs.org/en/) on your Windows Server.
10
+ 2. Install [IISnode](https://github.com/azure/iisnode/releases)
11
+ 3. Install [IIS `URLRewrite` Module](https://www.iis.net/downloads/microsoft/url-rewrite).
12
+ 4. In IIS, add `.mjs` as a new mime type and set its content type to `application/javascript`.
13
+ 5. Deploy the contents of your `.output` folder to your website in IIS.
14
+
15
+ ## Using IIS handler
16
+ **Preset:** `iis_handler`
17
+
18
+ You can use IIS http handler directly.
19
+
20
+ 1. Install the latest LTS version of [Node.js](https://nodejs.org/en/) on your Windows Server.
21
+ 2. Install [IIS `HttpPlatformHandler` Module](https://www.iis.net/downloads/microsoft/httpplatformhandler)
22
+ 3. Copy your `.output` directory into the Windows Server, and create a website on IIS pointing to that exact directory.
23
+
24
+ ## IIS config options
25
+
26
+ ```ts [nitro.config.ts]
27
+ import { defineConfig } from "nitro";
28
+
29
+ export default defineConfig({
30
+ // IIS options default
31
+ iis: {
32
+ // merges in a pre-existing web.config file to the nitro default file
33
+ mergeConfig: true,
34
+ // overrides the default nitro web.config file all together
35
+ overrideConfig: false,
36
+ },
37
+ });
38
+ ```
@@ -0,0 +1,109 @@
1
+ # Koyeb
2
+
3
+ > Deploy Nitro apps to Koyeb.
4
+
5
+ **Preset:** `koyeb`
6
+
7
+ <read-more></read-more>
8
+
9
+ ## Using the control panel
10
+
11
+ 1. In the [Koyeb control panel](https://app.koyeb.com/), click **Create App**.
12
+
13
+ 2. Choose **GitHub** as your deployment method.
14
+
15
+ 3. Choose the GitHub **repository** and **branch** containing your application code.
16
+
17
+ 4. Name your Service.
18
+
19
+ 5. If you did not add a `start` command to your `package.json` file, under the **Build and deployment settings**, toggle the override switch associated with the run command field. In the **Run command** field, enter:
20
+
21
+ ```bash
22
+ node .output/server/index.mjs`
23
+ ```
24
+
25
+ 6. In the **Advanced** section, click **Add Variable** and add a `NITRO_PRESET` variable set to `koyeb`.
26
+
27
+ 7. Name the App.
28
+
29
+ 8. Click the **Deploy** button.
30
+
31
+
32
+ ## Using the Koyeb CLI
33
+
34
+ 1. Follow the instructions targeting your operating system to [install the Koyeb CLI client](https://www.koyeb.com/docs/cli/installation) with an installer. Alternatively, visit the [releases page on GitHub](https://github.com/koyeb/koyeb-cli/releases) to directly download required files.
35
+
36
+ 2. Create a Koyeb API access token by visiting the [API settings for your organization](https://app.koyeb.com/settings/api) in the Koyeb control panel.
37
+
38
+ 3. Log into your account with the Koyeb CLI by typing:
39
+
40
+ ```bash
41
+ koyeb login
42
+ ```
43
+
44
+ Paste your API credentials when prompted.
45
+
46
+ 4. Deploy your Nitro application from a GitHub repository with the following command. Be sure to substitute your own values for `<APPLICATION_NAME>`, `<YOUR_GITHUB_USERNAME>`, and `<YOUR_REPOSITORY_NAME>`:
47
+
48
+ ```bash
49
+ koyeb app init <APPLICATION_NAME> \
50
+ --git github.com/<YOUR_GITHUB_USERNAME>/<YOUR_REPOSITORY_NAME> \
51
+ --git-branch main \
52
+ --git-run-command "node .output/server/index.mjs" \
53
+ --ports 3000:http \
54
+ --routes /:3000 \
55
+ --env PORT=3000 \
56
+ --env NITRO_PRESET=koyeb
57
+ ```
58
+
59
+
60
+ ## Using a docker container
61
+
62
+ 1. Create a `.dockerignore` file in the root of your project and add the following lines:
63
+
64
+ ```
65
+ Dockerfile
66
+ .dockerignore
67
+ node_modules
68
+ npm-debug.log
69
+ .nitro
70
+ .output
71
+ .git
72
+ dist
73
+ README.md
74
+ ```
75
+
76
+ 2. Add a `Dockerfile` to the root of your project:
77
+
78
+ ```
79
+ FROM node:18-alpine AS base
80
+
81
+ FROM base AS deps
82
+ RUN apk add --no-cache libc6-compat
83
+ WORKDIR /app
84
+ COPY package.json package-lock.json ./
85
+ RUN npm ci
86
+
87
+ FROM base AS builder
88
+ WORKDIR /app
89
+ COPY --from=deps /app/node_modules ./node_modules
90
+ COPY . .
91
+ RUN npm run build && npm cache clean --force
92
+
93
+ FROM base AS runner
94
+ WORKDIR /app
95
+ RUN addgroup --system --gid 1001 nodejs
96
+ RUN adduser --system --uid 1001 nitro
97
+ COPY --from=builder /app .
98
+ USER nitro
99
+ EXPOSE 3000
100
+ ENV PORT 3000
101
+ CMD ["npm", "run", "start"]
102
+ ```
103
+
104
+
105
+ The Dockerfile above provides the minimum requirements to run the Nitro application. You can easily extend it depending on your needs.
106
+ You will then need to push your Docker image to a registry. You can use [Docker Hub](https://hub.docker.com/) or [GitHub Container Registry](https://docs.github.com/en/packages/guides/about-github-container-registry) for example.
107
+ In the Koyeb control panel, use the image and the tag field to specify the image you want to deploy.
108
+ You can also use the [Koyeb CLI](https://www.koyeb.com/docs/build-and-deploy/cli/installation)
109
+ Refer to the Koyeb [Docker documentation](https://www.koyeb.com/docs/build-and-deploy/prebuilt-docker-images) for more information.
@@ -0,0 +1,47 @@
1
+ # Netlify
2
+
3
+ > Deploy Nitro apps to Netlify functions or edge.
4
+
5
+ **Preset:** `netlify`
6
+
7
+ <read-more></read-more>
8
+
9
+ <note>
10
+
11
+ Integration with this provider is possible with [zero configuration](/deploy/#zero-config-providers).
12
+ </note>
13
+
14
+ Normally, the deployment to Netlify does not require any configuration.
15
+ Nitro will auto-detect that you are in a [Netlify](https://www.netlify.com) build environment and build the correct version of your server.
16
+
17
+ For new sites, Netlify will detect that you are using Nitro and set the publish directory to `dist` and build command to `npm run build`.
18
+
19
+ If you are upgrading an existing site you should check these and update them if needed.
20
+
21
+ If you want to add custom redirects, you can do so with [`routeRules`](/config#routerules) or by adding a [`_redirects`](https://docs.netlify.com/routing/redirects/#syntax-for-the-redirects-file) file to your `public` directory.
22
+
23
+ For deployment, just push to your git repository [as you would normally do for Netlify](https://docs.netlify.com/configure-builds/get-started/).
24
+
25
+ <note>
26
+
27
+ Make sure the publish directory is set to `dist` when creating a new project.
28
+ </note>
29
+
30
+ ## Netlify edge functions
31
+
32
+ **Preset:** `netlify_edge`
33
+
34
+ Netlify Edge Functions use Deno and the powerful V8 JavaScript runtime to let you run globally distributed functions for the fastest possible response times.
35
+
36
+ <read-more></read-more>
37
+
38
+ Nitro output can directly run the server at the edge. Closer to your users.
39
+
40
+ <note>
41
+
42
+ Make sure the publish directory is set to `dist` when creating a new project.
43
+ </note>
44
+
45
+ ## Custom deploy configuration
46
+
47
+ You can provide additional deploy configuration using the `netlify` key inside `nitro.config`. It will be merged with built-in auto-generated config. Currently the only supported value is `images.remote_images`, for [configuring Netlify Image CDN](https://docs.netlify.com/image-cdn/create-integration/).
@@ -0,0 +1,37 @@
1
+ # Platform.sh
2
+
3
+ > Deploy Nitro apps to platform.sh
4
+
5
+ **Preset:** `platform_sh`
6
+
7
+ <read-more></read-more>
8
+
9
+ ## Setup
10
+
11
+ First, create a new project on platform.sh and link it to the repository you want to auto-deploy with.
12
+
13
+ Then in repository create `.platform.app.yaml` file:
14
+
15
+ ```yaml [.platform.app.yaml]
16
+ name: nitro-app
17
+ type: 'nodejs:20'
18
+ disk: 128
19
+ web:
20
+ commands:
21
+ start: "node .output/server/index.mjs"
22
+ build:
23
+ flavor: none
24
+ hooks:
25
+ build: |
26
+ corepack enable
27
+ npx nypm install
28
+ NITRO_PRESET=platform_sh npm run build
29
+ mounts:
30
+ '.data':
31
+ source: local
32
+ source_path: .data
33
+ ```
34
+
35
+ <read-more></read-more>
36
+
37
+ <read-more></read-more>
@@ -0,0 +1,37 @@
1
+ # Render.com
2
+
3
+ > Deploy Nitro apps to Render.com.
4
+
5
+ **Preset:** `render_com`
6
+
7
+ <read-more></read-more>
8
+
9
+ ## Set up application
10
+
11
+ 1. [Create a new Web Service](https://dashboard.render.com/select-repo?type=web) and select the repository that contains your code.
12
+ 2. Ensure the 'Node' environment is selected.
13
+ 3. Update the start command to `node .output/server/index.mjs`
14
+ 4. Click 'Advanced' and add an environment variable with `NITRO_PRESET` set to `render_com`. You may also need to add a `NODE_VERSION` environment variable set to `20` for the build to succeed ([docs](https://render.com/docs/node-version)).
15
+ 5. Click 'Create Web Service'.
16
+
17
+ ## Infrastructure as Code (IaC)
18
+
19
+ 1. Create a file called `render.yaml` with following content at the root of your repository.
20
+
21
+ This file followed by [Infrastructure as Code](https://render.com/docs/infrastructure-as-code) on Render
22
+
23
+ ```yaml
24
+ services:
25
+ - type: web
26
+ name: <PROJECTNAME>
27
+ env: node
28
+ branch: main
29
+ startCommand: node .output/server/index.mjs
30
+ buildCommand: npx nypm install && npm run build
31
+ envVars:
32
+ - key: NITRO_PRESET
33
+ value: render_com
34
+ ```
35
+
36
+ 1. [Create a new Blueprint Instance](https://dashboard.render.com/select-repo?type=blueprint) and select the repository containing your `render.yaml` file.
37
+ You should be good to go!
@@ -0,0 +1,81 @@
1
+ # AWS Amplify
2
+
3
+ > Deploy Nitro apps to AWS Amplify Hosting.
4
+
5
+ **Preset:** `aws_amplify`
6
+
7
+ <read-more></read-more>
8
+
9
+ ## Deploy to AWS Amplify Hosting
10
+
11
+ <tip>
12
+
13
+ Integration with this provider is possible with [zero configuration](/deploy/#zero-config-providers).
14
+ </tip>
15
+
16
+ 1. Login to the [AWS Amplify Hosting Console](https://console.aws.amazon.com/amplify/)
17
+ 2. Click on "Get Started" > Amplify Hosting (Host your web app)
18
+ 3. Select and authorize access to your Git repository provider and select the main branch
19
+ 4. Choose a name for your app, make sure build settings are auto-detected and optionally set requirement environment variables under the advanced section
20
+ 5. Optionally, select Enable SSR logging to enable server-side logging to your Amazon CloudWatch account
21
+ 6. Confirm configuration and click on "Save and Deploy"
22
+
23
+ ## Advanced Configuration
24
+ You can configure advanced options of this preset using `awsAmplify` option.
25
+
26
+ ```ts [nitro.config.ts]
27
+ import { defineConfig } from "nitro";
28
+
29
+ export default defineConfig({
30
+ awsAmplify: {
31
+ // catchAllStaticFallback: true,
32
+ // imageOptimization: { path: "/_image", cacheControl: "public, max-age=3600, immutable" },
33
+ // imageSettings: { ... },
34
+ // runtime: "nodejs18.x", // default: "nodejs18.x" | "nodejs16.x" | "nodejs20.x"
35
+ }
36
+ })
37
+ ```
38
+
39
+ ### `amplify.yml`
40
+
41
+ You might need a custom `amplify.yml` file for advanced configuration. Here are two template examples:
42
+
43
+ <code-group>
44
+
45
+ ```yml [amplify.yml]
46
+ version: 1
47
+ frontend:
48
+ phases:
49
+ preBuild:
50
+ commands:
51
+ - nvm use 18 && node --version
52
+ - corepack enable && npx --yes nypm install
53
+ build:
54
+ commands:
55
+ - pnpm build
56
+ artifacts:
57
+ baseDirectory: .amplify-hosting
58
+ files:
59
+ - "**/*"
60
+ ```
61
+
62
+ ```yml [amplify.yml (monorepo)]
63
+ version: 1
64
+ applications:
65
+ - frontend:
66
+ phases:
67
+ preBuild:
68
+ commands:
69
+ - nvm use 18 && node --version
70
+ - corepack enable && npx --yes nypm install
71
+ build:
72
+ commands:
73
+ - pnpm --filter website1 build
74
+ artifacts:
75
+ baseDirectory: apps/website1/.amplify-hosting
76
+ files:
77
+ - '**/*'
78
+ buildPath: /
79
+ appRoot: apps/website1
80
+ ```
81
+ </code-group>
@@ -0,0 +1,24 @@
1
+ # StormKit
2
+
3
+ > Deploy Nitro apps to StormKit.
4
+
5
+ **Preset:** `stormkit`
6
+
7
+ <read-more></read-more>
8
+
9
+ <note>
10
+
11
+ Integration with [Stormkit](https://www.stormkit.io/) is possible with [zero configuration](/deploy#zero-config-providers).
12
+ </note>
13
+
14
+ ## Setup
15
+
16
+ Follow the steps to [create a new app](https://app.stormkit.io/apps/new) on Stormkit.
17
+
18
+ ![Create a new app on Stormkit](/images/stormkit-new-app.png)
19
+
20
+ ## Deployment
21
+
22
+ By default, Stormkit will deploy your apps automatically when you push changes to your main branch. But to trigger a manual deploy (for example, you might do this for the very first deployment), you may click `Deploy now`.
23
+
24
+ ![Trigger a manual deploy with Deploy Now](/images/stormkit-deploy.png)