fluidd
/
vite.config.inject-version.ts
52 строки · 1.2 Кб
1import child_process from 'child_process'2import fs from 'fs'3import path from 'path'4import { version } from './package.json'5
6import type { Plugin } from 'vite'7
8const writeVersionFile = async () => {9const versionFile = await fs.promises.open(path.resolve(__dirname, 'dist/.version'), 'w')10
11await versionFile.writeFile(`v${version}`)12
13await versionFile.close()14}
15
16const writeReleaseInfoFile = async () => {17const releaseInfoFile = await fs.promises.open(path.resolve(__dirname, 'dist/release_info.json'), 'w')18
19await releaseInfoFile.writeFile(JSON.stringify({20project_name: 'fluidd',21project_owner: 'fluidd-core',22version: `v${version}`23}))24
25await releaseInfoFile.close()26}
27
28const vitePluginInjectVersion = (): Plugin => {29return {30name: 'version',31config: () => {32const git_hash = child_process33.execSync('git rev-parse --short HEAD')34.toString()35
36return {37define: {38'import.meta.env.VERSION': JSON.stringify(version),39'import.meta.env.HASH': JSON.stringify(git_hash)40}41}42},43writeBundle: () => {44setImmediate(async () => {45await writeVersionFile()46await writeReleaseInfoFile()47})48}49}50}
51
52export default vitePluginInjectVersion53