Ctrl K
ComunidadGuías…

vite.config.inject-version.ts

Rama develop · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import child_process from 'child_process'
import fs from 'fs'
import path from 'path'
import packageJson from './package.json' with { type: 'json' }

import type { Plugin } from 'vite'

const writeVersionFile = async () => {
  const versionFile = await fs.promises.open(path.resolve(import.meta.dirname, 'dist/.version'), 'w')

  await versionFile.writeFile(`v${packageJson.version}`)

  await versionFile.close()
}

const writeReleaseInfoFile = async () => {
  const releaseInfoFile = await fs.promises.open(path.resolve(import.meta.dirname, 'dist/release_info.json'), 'w')

  await releaseInfoFile.writeFile(JSON.stringify({
    project_name: 'fluidd',
    project_owner: 'fluidd-core',
    version: `v${packageJson.version}`
  }))

  await releaseInfoFile.close()
}

const vitePluginInjectVersion = (): Plugin => {
  return {
    name: 'version',
    config: () => {
      const git_hash = child_process
        .execSync('git rev-parse --short HEAD')
        .toString()

      return {
        define: {
          'import.meta.env.VERSION': JSON.stringify(packageJson.version),
          'import.meta.env.HASH': JSON.stringify(git_hash)
        }
      }
    },
    writeBundle: () => {
      setImmediate(async () => {
        await writeVersionFile()
        await writeReleaseInfoFile()
      })
    }
  }
}

export default vitePluginInjectVersion