# core/plugins/server.plugin.ts

> 14 lines of code and 3 definitions.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-plugins-server-plugin-ts
Source text: https://banes-lab.com/source/build-scripts/core/plugins/server.plugin.ts.txt

Listed in [core/plugins](https://banes-lab.com/api/source/build-scripts/core/plugins.md), before [core/plugins/site.plugin.ts](https://banes-lab.com/source/build-scripts/core/plugins/site.plugin.ts.md).

## Definitions

- `devPortPlugin` (lexical_declaration, line 8, exported)
- `PLUGIN_NAME` (lexical_declaration, line 5)
- `SERVE_COMMAND` (lexical_declaration, line 6)

## Contained in

- [core/plugins](https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-plugins.md)

## Uses

- [core/factories/certificate.factory.ts](https://banes-lab.com/source/build-scripts/core/factories/certificate.factory.ts.md)

## Linked from

- [core/factories](https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-factories.md)

## Source

```typescript
import { type PortKey, portOf } from "@ssot/secrets";
import type { Plugin } from "vite";
import { devCertificate } from "#core/factories/certificate.factory";

const PLUGIN_NAME = "banes-lab-dev-port";
const SERVE_COMMAND = "serve";

export const devPortPlugin = function devPortPlugin(key: PortKey): Plugin {
    return {
        config: async (_config, environment) =>
            environment.command === SERVE_COMMAND
                ? { server: { https: await devCertificate(), port: portOf(key), strictPort: true } }
                : null,
        name: PLUGIN_NAME,
    };
};
```
