nuxt-pdfmake
Version:
Easily generate PDFs in Nuxt.js using pdfmake
70 lines (66 loc) • 1.94 kB
JavaScript
import { defineNuxtModule, logger, createResolver, addPlugin, addImports } from '@nuxt/kit';
const name = "nuxt-pdfmake";
const version = "0.0.47";
const module = defineNuxtModule({
meta: {
name,
version,
configKey: "pdfmake",
compatibility: {
nuxt: "^3.0.0 || ^4.0.0"
}
},
// Default configuration options of the Nuxt module
defaults: {
enabled: true,
enableComposable: true,
enableDevtools: true,
includeFontPresets: true
},
setup(options, nuxt) {
if (!options.enabled) {
logger.info("[nuxt-pdfmake] Module is disabled");
}
const resolver = createResolver(import.meta.url);
const runtimeDir = resolver.resolve("./runtime");
nuxt.options.build.transpile.push(runtimeDir);
nuxt.options.alias["#pdfmake"] = runtimeDir;
nuxt.options.app.head.script ||= [];
nuxt.options.app.head.script.push(
{
src: "https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.12/pdfmake.min.js",
defer: true
},
{
src: "https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.12/vfs_fonts.min.js",
defer: true
}
);
addPlugin(resolver.resolve("./runtime/pdfmake.client"));
if (options.enableComposable) {
addImports({
from: resolver.resolve("./runtime/composables/usePDFMake"),
name: "usePDFMake"
});
}
if (options.includeFontPresets) {
addImports({
from: resolver.resolve("./runtime/composables/fontPresets"),
name: "useFontPresets"
});
}
if (!options.enableDevtools) return;
nuxt.hook("devtools:customTabs", (iframeTabs) => {
iframeTabs.push({
name: "pdfmake",
title: "PDFMake",
icon: "i-vscode-icons-file-type-pdf2",
view: {
type: "iframe",
src: "https://pdfmake.github.io/docs/0.1/getting-started/client-side/"
}
});
});
}
});
export { module as default };