# Function: setupInkHmrListener() (/jsdoc/pixi-vn-ink/vite-listener/functions/setupInkHmrListener)



\> **setupInkHmrListener**(`options?`): `Promise`\<`void`>

Defined in: [src/vite-listener/plugins.ts:94](https://github.com/DRincs-Productions/pixi-vn-ink/blob/8d45a4e5f29997844c9784f1a713b33e5400b7d0/src/vite-listener/plugins.ts#L94)

Sets up HMR listeners for live ink story reloading in the browser.

Call this once in your app entry file.
If available in your `@drincs/pixi-vn` version, call `setupPixivnViteData()`
before this function; otherwise you can safely skip that step.
Handler registration (hashtag commands, text replaces, characters, labels)
is handled server-side by `vitePluginPixivn`'s `content` / `characters` /
`labels` options — no browser POSTs are needed.

## Parameters [#parameters]

### options? [#options]

[`InkHmrListenerOptions`](/jsdoc/pixi-vn-ink/vite-listener/type-aliases/InkHmrListenerOptions) = `{}`

## Returns [#returns]

`Promise`\<`void`>

## See [#see]

[https://pixi-vn.com/ink#vite-plugin](https://pixi-vn.com/ink#vite-plugin)

## Example [#example]

```ts title="main.ts"
// main.ts
import { setupInkHmrListener } from "@drincs/pixi-vn-ink/vite-listener";

const pixivnViteListener = await import("@drincs/pixi-vn/vite-listener").catch((error) => {
  const message = error instanceof Error ? error.message : String(error);
  const code =
    typeof error === "object" && error !== null && "code" in error
      ? String((error as { code?: unknown }).code)
      : "";
  if (
    code === "ERR_MODULE_NOT_FOUND" ||
    code === "ERR_PACKAGE_PATH_NOT_EXPORTED" ||
    message.includes("@drincs/pixi-vn/vite-listener")
  ) return undefined;
  throw error;
});
await pixivnViteListener?.setupPixivnViteData?.();
await setupInkHmrListener();
```
