@hono/vite-build 1.7.0 → 1.8.0

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,153 @@
1
+ # @hono/vite-build
2
+
3
+ ## 1.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#315](https://github.com/honojs/vite-plugins/pull/315) [`d9ecb01ac8220d85c539081b139e4117b53ba711`](https://github.com/honojs/vite-plugins/commit/d9ecb01ac8220d85c539081b139e4117b53ba711) Thanks [@chadxz](https://github.com/chadxz)! - Added `shutdownTimeoutMs` option to the Node adapter for graceful shutdown on SIGINT/SIGTERM signals. Set to a timeout in milliseconds to enable graceful shutdown, or 0 to wait indefinitely for connections to close.
8
+
9
+ ## 1.7.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#279](https://github.com/honojs/vite-plugins/pull/279) [`b45925cf08f82d607f850191589ff154d0c1ea5f`](https://github.com/honojs/vite-plugins/commit/b45925cf08f82d607f850191589ff154d0c1ea5f) Thanks [@yusukebe](https://github.com/yusukebe)! - feat: add `preset` option
14
+
15
+ ## 1.6.2
16
+
17
+ ### Patch Changes
18
+
19
+ - [#266](https://github.com/honojs/vite-plugins/pull/266) [`7e51cc7f29d0d64dc4bd9c27e0f6c5491ccba5c8`](https://github.com/honojs/vite-plugins/commit/7e51cc7f29d0d64dc4bd9c27e0f6c5491ccba5c8) Thanks [@yusukebe](https://github.com/yusukebe)! - fix: fix the option types of Cloudflare Workers adapter
20
+
21
+ ## 1.6.1
22
+
23
+ ### Patch Changes
24
+
25
+ - [#261](https://github.com/honojs/vite-plugins/pull/261) [`c116701a2423eb9882de6559223304b66305a281`](https://github.com/honojs/vite-plugins/commit/c116701a2423eb9882de6559223304b66305a281) Thanks [@yusukebe](https://github.com/yusukebe)! - fix: correct `CloudflareWorkersBuildOptions` type
26
+
27
+ ## 1.6.0
28
+
29
+ ### Minor Changes
30
+
31
+ - [#254](https://github.com/honojs/vite-plugins/pull/254) [`ee00f8b93a480ab332245c6d661b8001f24028e2`](https://github.com/honojs/vite-plugins/commit/ee00f8b93a480ab332245c6d661b8001f24028e2) Thanks [@yusukebe](https://github.com/yusukebe)! - feat: export `defaultOptions` from Cloudflare Workers adpater
32
+
33
+ ## 1.5.0
34
+
35
+ ### Minor Changes
36
+
37
+ - [#247](https://github.com/honojs/vite-plugins/pull/247) [`e7f58050840cf2f6a1ec446e3e4e89b0b0a85014`](https://github.com/honojs/vite-plugins/commit/e7f58050840cf2f6a1ec446e3e4e89b0b0a85014) Thanks [@toga4](https://github.com/toga4)! - feat(build): support non-fetch handlers for Cloudflare Workers
38
+
39
+ ## 1.4.0
40
+
41
+ ### Minor Changes
42
+
43
+ - [#241](https://github.com/honojs/vite-plugins/pull/241) [`314c66da2b656d4705c4d0636cd1623b643dbd61`](https://github.com/honojs/vite-plugins/commit/314c66da2b656d4705c4d0636cd1623b643dbd61) Thanks [@justblender](https://github.com/justblender)! - Added a new Vercel build adapter.
44
+
45
+ This adapter can be imported from `@hono/vite-build/vercel` and will compile
46
+ your Hono app to comply with the specification requirements of the Vercel Build Output API.
47
+
48
+ Please note that this adapter produces output suitable only for Vercel Serverless Functions.
49
+ It does not support the Edge Runtime, which appears to be gradually phased out in favor of Vercel's Fluid compute architecture.
50
+
51
+ The default export will have the `@hono/node-server/vercel` adapter applied to it.
52
+
53
+ ### Patch Changes
54
+
55
+ - [#244](https://github.com/honojs/vite-plugins/pull/244) [`2d8d6d202a106de6049febc524c29ec24f6911b9`](https://github.com/honojs/vite-plugins/commit/2d8d6d202a106de6049febc524c29ec24f6911b9) Thanks [@yusukebe](https://github.com/yusukebe)! - fix: enable `staticPaths` option
56
+
57
+ ## 1.3.1
58
+
59
+ ### Patch Changes
60
+
61
+ - [#242](https://github.com/honojs/vite-plugins/pull/242) [`88ca94493ebb39cafe0d42bb741cce870ef58c68`](https://github.com/honojs/vite-plugins/commit/88ca94493ebb39cafe0d42bb741cce870ef58c68) Thanks [@yusukebe](https://github.com/yusukebe)! - fix: support `fetch` export
62
+
63
+ ## 1.3.0
64
+
65
+ ### Minor Changes
66
+
67
+ - [#218](https://github.com/honojs/vite-plugins/pull/218) [`65e2f768a26d0665aaa05f60abf36bb66a6b6fa9`](https://github.com/honojs/vite-plugins/commit/65e2f768a26d0665aaa05f60abf36bb66a6b6fa9) Thanks [@chadxz](https://github.com/chadxz)! - Added a new Netlify Functions build adapter.
68
+
69
+ This adapter can be imported from `@hono/vite-build/netlify-functions` and will
70
+ compile your Hono app to comply with the requirements of the Netlify Functions
71
+ runtime.
72
+
73
+ - The default export will have the `hono/netlify` adapter applied to it.
74
+ - A `config` object will be exported, setting the function path to `'/*'` and
75
+ `preferStatic` to `true`.
76
+
77
+ Please note, this is for the Netlify Functions runtime, not the Netlify Edge
78
+ Functions runtime.
79
+
80
+ Example:
81
+
82
+ ```ts
83
+ // vite.config.ts
84
+ import { defineConfig } from 'vite'
85
+ import devServer from '@hono/vite-dev-server'
86
+ import build from '@hono/vite-build/netlify-functions'
87
+
88
+ export default defineConfig({
89
+ plugins: [
90
+ devServer({
91
+ entry: './src/index.ts',
92
+ }),
93
+ build({
94
+ entry: './src/index.ts',
95
+ output: 'functions/server/index.js',
96
+ }),
97
+ ],
98
+ })
99
+ ```
100
+
101
+ If you also have a `public/publish` directory for your assets that should be
102
+ published to the corresponding Netlify site, then after running a build, you
103
+ would end up with a directory structure like:
104
+
105
+ ```
106
+ dist/
107
+ functions/
108
+ server/
109
+ index.js
110
+ publish/
111
+ robots.txt
112
+ ....
113
+ ```
114
+
115
+ then you can use a netlify.toml that looks like:
116
+
117
+ ```toml
118
+ # https://ntl.fyi/file-based-build-config
119
+ [build]
120
+ command = "vite build"
121
+ functions = "dist/functions"
122
+ publish = "dist/publish"
123
+ ```
124
+
125
+ ## 1.2.1
126
+
127
+ ### Patch Changes
128
+
129
+ - [#204](https://github.com/honojs/vite-plugins/pull/204) [`adcdd9ad7a3c7ef6a828dfa1210ba5d08eadc576`](https://github.com/honojs/vite-plugins/commit/adcdd9ad7a3c7ef6a828dfa1210ba5d08eadc576) Thanks [@jonz94](https://github.com/jonz94)! - fix(build): remove `console.log`
130
+
131
+ ## 1.2.0
132
+
133
+ ### Minor Changes
134
+
135
+ - [#198](https://github.com/honojs/vite-plugins/pull/198) [`f08c6586018c0da828158ec252be4d889f8c32e8`](https://github.com/honojs/vite-plugins/commit/f08c6586018c0da828158ec252be4d889f8c32e8) Thanks [@yusukebe](https://github.com/yusukebe)! - feat: Node.js adapter supports `port` option
136
+
137
+ ## 1.1.1
138
+
139
+ ### Patch Changes
140
+
141
+ - [#196](https://github.com/honojs/vite-plugins/pull/196) [`ead8c3255f2d7fb68084b8d30c3fbe9fcaabb3ec`](https://github.com/honojs/vite-plugins/commit/ead8c3255f2d7fb68084b8d30c3fbe9fcaabb3ec) Thanks [@yusukebe](https://github.com/yusukebe)! - fix: support latest `hono`
142
+
143
+ ## 1.1.0
144
+
145
+ ### Minor Changes
146
+
147
+ - [#181](https://github.com/honojs/vite-plugins/pull/181) [`fc15f718c0172f84748f8717f53abba40470baed`](https://github.com/honojs/vite-plugins/commit/fc15f718c0172f84748f8717f53abba40470baed) Thanks [@nakasyou](https://github.com/nakasyou)! - Added Deno adapter
148
+
149
+ ## 1.0.0
150
+
151
+ ### Major Changes
152
+
153
+ - [#177](https://github.com/honojs/vite-plugins/pull/177) [`1ceb95757f1151e9f08cebd992447fb67b470957`](https://github.com/honojs/vite-plugins/commit/1ceb95757f1151e9f08cebd992447fb67b470957) Thanks [@yusukebe](https://github.com/yusukebe)! - Initial release
@@ -5,6 +5,14 @@ import '../../entry/index.js';
5
5
  type NodeBuildOptions = {
6
6
  staticRoot?: string | undefined;
7
7
  port?: number | undefined;
8
+ /**
9
+ * Enable graceful shutdown on SIGINT and SIGTERM signals.
10
+ * Set to a number to specify the timeout in milliseconds before forcing shutdown.
11
+ * Set to 0 to wait indefinitely for connections to close.
12
+ * Leave undefined to disable graceful shutdown.
13
+ * @default undefined
14
+ */
15
+ shutdownTimeoutMs?: number | undefined;
8
16
  } & BuildOptions;
9
17
  declare const nodeBuildPlugin: (pluginOptions?: NodeBuildOptions) => Plugin;
10
18
 
@@ -2,6 +2,7 @@ import buildPlugin from "../../base.js";
2
2
  import { serveStaticHook } from "../../entry/serve-static.js";
3
3
  const nodeBuildPlugin = (pluginOptions) => {
4
4
  const port = pluginOptions?.port ?? 3e3;
5
+ const shutdownTimeoutMs = pluginOptions?.shutdownTimeoutMs;
5
6
  return {
6
7
  ...buildPlugin({
7
8
  ...{
@@ -18,7 +19,21 @@ const nodeBuildPlugin = (pluginOptions) => {
18
19
  entryContentAfterHooks: [
19
20
  async (appName) => {
20
21
  let code = "import { serve } from '@hono/node-server'\n";
21
- code += `serve({ fetch: ${appName}.fetch, port: ${port.toString()} })`;
22
+ if (shutdownTimeoutMs !== void 0) {
23
+ code += `const server = serve({ fetch: ${appName}.fetch, port: ${port.toString()} })
24
+ `;
25
+ code += "const gracefulShutdown = () => {\n";
26
+ code += " server.close(() => process.exit(0))\n";
27
+ if (shutdownTimeoutMs > 0) {
28
+ code += ` setTimeout(() => process.exit(1), ${shutdownTimeoutMs}).unref()
29
+ `;
30
+ }
31
+ code += "}\n";
32
+ code += "process.on('SIGINT', gracefulShutdown)\n";
33
+ code += "process.on('SIGTERM', gracefulShutdown)";
34
+ } else {
35
+ code += `serve({ fetch: ${appName}.fetch, port: ${port.toString()} })`;
36
+ }
22
37
  return code;
23
38
  }
24
39
  ]
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hono/vite-build",
3
3
  "description": "Vite plugin to build your Hono app",
4
- "version": "1.7.0",
4
+ "version": "1.8.0",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.js",
7
7
  "type": "module",
@@ -89,6 +89,8 @@
89
89
  },
90
90
  "homepage": "https://github.com/honojs/vite-plugins",
91
91
  "devDependencies": {
92
+ "@hono/node-server": "^1.19.6",
93
+ "@types/node": "^24.10.0",
92
94
  "glob": "^10.3.10",
93
95
  "hono": "^4.6.12",
94
96
  "publint": "^0.1.12",
@@ -103,4 +105,4 @@
103
105
  "engines": {
104
106
  "node": ">=18.14.1"
105
107
  }
106
- }
108
+ }