nuxt-build-info
Version:
Track deployments with build-time info: version, git details, env context and timestamps for Nuxt apps
38 lines (35 loc) • 1.28 kB
JavaScript
import { readFileSync } from 'node:fs';
import { defineNuxtModule, createResolver, addImportsDir } from '@nuxt/kit';
import { getEnv } from '../dist/runtime/utils/env.js';
const module = defineNuxtModule({
meta: {
name: "build-info",
configKey: "buildInfo"
},
defaults: {
version: void 0
},
async setup(options, nuxt) {
const { resolve } = createResolver(import.meta.url);
const runtimeDir = resolve("./runtime");
const packageJsonPath = resolve(nuxt.options.rootDir, "package.json");
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
const packageVersion = packageJson.version || "0.0.0";
const { env, commit, shortCommit, branch } = await getEnv();
const buildInfo = {
version: options.version || packageVersion,
time: +Date.now(),
commit,
shortCommit,
branch,
env
};
nuxt.options.appConfig = nuxt.options.appConfig || {};
nuxt.options.appConfig.buildInfo = buildInfo;
nuxt.options.appConfig.env = env;
nuxt.options.nitro.virtual = nuxt.options.nitro.virtual || {};
nuxt.options.nitro.virtual["#build-info"] = `export const env = ${JSON.stringify(env)}`;
addImportsDir(resolve(runtimeDir, "composables"));
}
});
export { module as default };