Skip to content

vite插件-打包版本号自增

js
import { Plugin } from 'vite'
import fs from 'fs'
import path from 'path';

const incrementVersion = (version: string) => {
  const parts = version.split('.').map(Number);
  parts[2]++;
  if (parts[2] > 9) {
    parts[2] = 0;
    parts[1]++;
    if (parts[1] > 9) {
      parts[1] = 0;
      parts[0]++;
    }
  }
  return parts.join('.');
}

export default function autoIncrementVersion(): Plugin {
  return {
    name: 'vite:autoIncrementVersion',
    apply: 'build',
    buildStart(options) {
      if (options) {
        const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, "../package.json"), 'utf8'))
        pkg.version = incrementVersion(pkg.version)
        fs.writeFileSync(path.resolve(__dirname, "../package.json"), JSON.stringify(pkg, null, 2))
      }
    },
  }
}

使用

js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import autoIncrementVersion from './vite-plugin'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), autoIncrementVersion()],
})