@inkline/plugin
Version:
<p align="center"> <a href="https://inkline.io/"> <img src="https://raw.githubusercontent.com/inkline/inkline.io/main/assets/images/logo/logo-black.svg" alt="Inkline" width=72 height=72> </a> </p>
82 lines (81 loc) • 2.25 kB
JavaScript
import {
defineNuxtModule,
addPluginTemplate,
addComponentsDir
} from "@nuxt/kit";
import { join, resolve, dirname } from "path";
import { fileURLToPath } from "url";
import { createRequire } from "module";
import { watch } from "./plugin/watch.mjs";
import { build } from "./plugin/build.mjs";
import { getResolvedOptions } from "@inkline/config";
const defaultImportOptions = {
mode: "auto",
styles: true,
scripts: true,
utilities: true
};
export const module = defineNuxtModule({
meta: {
name: "@inkline/nuxt",
version: "3",
configKey: "inkline",
compatibility: {
nuxt: ">=2.0.0",
bridge: true
}
},
async setup({ import: importOptions, configFile, outputDir, extName, globals }, nuxt) {
importOptions = {
...defaultImportOptions,
...importOptions
};
const pluginOptions = {
configFile,
outputDir,
extName
};
const resolvedPluginOptions = getResolvedOptions(pluginOptions);
const templatesDir = fileURLToPath(
new URL("./templates", import.meta.url)
);
const inklineRequire = createRequire(import.meta.url);
if (importOptions.styles !== false) {
nuxt.options.css = nuxt.options.css || [];
nuxt.options.css.unshift(
`${resolvedPluginOptions.outputDir}/index.scss`
);
nuxt.options.css.unshift("@inkline/inkline/css/index.scss");
if (importOptions.utilities !== false) {
nuxt.options.css.push("@inkline/inkline/css/utilities.scss");
}
}
nuxt.options.build.transpile.push("@inkline/inkline");
if (importOptions.scripts !== false) {
addPluginTemplate({
mode: "all",
src: resolve(templatesDir, "nuxt.ejs"),
write: true,
filename: "inkline.mjs",
options: globals || {}
});
}
await addComponentsDir({
path: join(
dirname(inklineRequire.resolve("@inkline/inkline")),
"components"
),
pathPrefix: false,
pattern: "**/*.vue",
ignore: ["**/examples/*.vue"],
transpile: true,
global: importOptions.mode === "global"
});
if (nuxt.options.dev) {
watch(pluginOptions);
} else {
build(pluginOptions);
}
}
});
export default module;