Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/lukehackett/vite-plugin-build-info-file
- Owner: LukeHackett
- License: mit
- Created: 2024-12-31T19:28:13.000Z (28 days ago)
- Default Branch: main
- Last Pushed: 2025-01-10T20:37:38.000Z (18 days ago)
- Last Synced: 2025-01-10T21:37:51.948Z (18 days 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.