Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lukehackett/vite-plugin-build-info-file

Vite plugin that generates build information and outputs it as a json file
https://github.com/lukehackett/vite-plugin-build-info-file

Last synced: 14 days ago
JSON representation

Vite plugin that generates build information and outputs it as a json file

Awesome Lists containing this project

README

        



Logo

vite-plugin-build-info-file


A vite plugin that generates build information and outputs it as a json file.




NPM

GitHub Repository Stars

License

Last Commit
Build Status

Issues


## Features

- Generates a json file within the build folder for serving alongside the application.
- Supports `git`, `node`, `package.json` and `platform` contributors out of the box.
- Supports custom contributors for integrating with custom data sources.

## Installation

You can add it as a dev dependency via your package manager of choice, e.g. NPM, Yarn, PNPM.

```bash
npm install --save-dev vite-plugin-build-info-file
```

## Usage

```ts
// vite.config.js
import { defineConfig } from "vite";
import buildInfoFile from "vite-plugin-build-info-file";

export default defineConfig({
plugins: [
buildInfoFile({
/* (optional) pass your config */
})
]
})
```

The default configuration will result in an `info.json` file (see example below) being emitted within the `dist` folder of your project

```json
{
"git": {
"branch": "main",
"commit": {
"id": "647b8d6",
"tags": [],
"time": "1736356630"
}
},
"node": {
"version": "v20.18.1"
},
"package": {
"name": "my-app",
"version": "1.0.0"
},
"platform": {
"arch": "arm64",
"platform": "darwin"
}
}
```

### Configuration

The following configuration options can be passed the `buildInfoFile` plugin function.

```ts
export type BuildInfoFilePluginConfig = {
/**
* The name of the file to be generated, defaults to 'info.json'.
*/
filename?: string;

/**
* Key/Value pairs to be injected into the file info.json file.
*/
info?: Json;

/**
* Configuration for each contributor. By default all contributors are enabled.
*/
contributors?:
| {
git?: GitContributorConfig;
node?: ContributorConfig;
package?: ContributorConfig;
platform?: ContributorConfig;
}
| { [key: string]: Contributor };
};
```

#### Custom Contributors

Besides the pre-defined contributors, it is possible to create custom contributors.

Each contributor should implement the `Contributor` type, which is a function that returns a `Promise` value.

An example implementation is shown below:

```ts
// vite.config.js
import { defineConfig } from "vite";
import buildInfoFile from "vite-plugin-build-info-file";

const helloWorldContributor: Contributor = (config: ContributorConfig): Promise => {
return Promise.resolve({ message: 'Hello World!' });
}

export default defineConfig({
plugins: [
buildInfoFile({
contributors: {
myContributor: helloWorldContributor
}
})
]
})
```

This will generate the following `info.json` file:

```json
{
"myContributor": {
"message": "Hello World"
}
// other contributors have been omitted
}
```

## Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Please review the [Contributing Guidelines](./CONTRIBUTING.md) if you would like to make a contribution to this project.

## Issues

If you encounter any other bugs or need some other features feel free to open an [issue](https://github.com/LukeHackett/vite-plugin-build-info-file/issues).

## License

Distributed under the MIT License. See [LICENSE.md](./LICENSE) for more information.