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: about 1 month ago
JSON representation
Vite plugin that generates build information and outputs it as a json file
- Host: GitHub
- URL: https://github.com/lukehackett/vite-plugin-build-info-file
- Owner: LukeHackett
- License: mit
- Created: 2024-12-31T19:28:13.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-01-10T20:37:38.000Z (10 months ago)
- Last Synced: 2025-01-10T21:37:51.948Z (10 months ago)
- Language: TypeScript
- Size: 76.2 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
vite-plugin-build-info-file
A vite plugin that generates build information and outputs it as a json file.
## 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.