nuxt-size
Version:
ultrafast get folder size after build
51 lines (48 loc) • 1.33 kB
JavaScript
import { existsSync } from 'node:fs';
import { cyan, gray } from 'kolorist';
import { getFolderSizeBin } from 'go-get-folder-size/npm/bin.mjs';
import { logger as logger$1, defineNuxtModule } from '@nuxt/kit';
import { isCI } from 'std-env';
const logger = logger$1.withTag("nuxt-size");
const module = defineNuxtModule({
meta: {
name: "nuxt-size",
configKey: "size",
compatibility: {
nuxt: "^3.0.0"
}
},
defaults: {
showOutput: true,
showBuildDir: false
},
setup(options, nuxt) {
if (!isCI) {
const { dev, rootDir, buildDir } = nuxt.options;
if (dev)
return;
const { showBuildDir, showOutput } = options;
if (showOutput) {
useBuildClose(`${rootDir}/.output`, "\u03A3 Output size");
}
if (showBuildDir) {
useBuildClose(buildDir, "\u03A3 BuildDir size");
}
}
function useBuildClose(base, tip) {
nuxt.hook("build:done", () => {
nuxt.hook("close", async () => {
if (!existsSync(base)) {
logger.warn(`${base} does not exist`);
return;
}
const size = await getFolderSizeBin(base, true);
logger.log(
`${cyan(tip)}: ${size}${gray(" - " + base)}`
);
});
});
}
}
});
export { module as default };