From 768683e0fcb760e4d629b9869edaafbd6143c0be Mon Sep 17 00:00:00 2001 From: SheetJS Date: Fri, 2 Jun 2023 04:11:35 -0400 Subject: [PATCH] step4 --- nuxt.config.ts | 11 +++++++++-- sheetformer.ts | 15 +++++++++++++++ sheetmodule.ts | 14 ++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 sheetformer.ts create mode 100644 sheetmodule.ts diff --git a/nuxt.config.ts b/nuxt.config.ts index 5dd5478..0fe4992 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,4 +1,11 @@ -// https://v3.nuxtjs.org/api/configuration/nuxt.config +import SheetJSModule from './sheetmodule' + export default defineNuxtConfig({ - modules: ['@nuxt/content'] + // @ts-ignore + telemetry: false, + modules: [ + SheetJSModule, + '@nuxt/content' + ], + content: {} }) diff --git a/sheetformer.ts b/sheetformer.ts new file mode 100644 index 0000000..68f58f7 --- /dev/null +++ b/sheetformer.ts @@ -0,0 +1,15 @@ +// @ts-ignore +import { defineTransformer } from "@nuxt/content/transformers/utils"; +import { read, utils } from "xlsx"; +import { readFileSync } from "node:fs"; +import { resolve } from 'node:path'; + +export default defineTransformer({ + name: 'sheetformer', + extensions: ['.xlsx'], + parse (_id: string, rawContent: string) { + const wb = read(readFileSync(resolve("./content/" + _id.slice(8)))); + const body = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name])})); + return { _id, body }; + } +}); diff --git a/sheetmodule.ts b/sheetmodule.ts new file mode 100644 index 0000000..83c6862 --- /dev/null +++ b/sheetmodule.ts @@ -0,0 +1,14 @@ +import { resolve } from 'path' +import { defineNuxtModule } from '@nuxt/kit' + +export default defineNuxtModule({ + setup (_options, nuxt) { + nuxt.options.nitro.externals = nuxt.options.nitro.externals || {} + nuxt.options.nitro.externals.inline = nuxt.options.nitro.externals.inline || [] + nuxt.options.nitro.externals.inline.push(resolve('./sheetmodule')) + // @ts-ignore + nuxt.hook('content:context', (contentContext) => { + contentContext.transformers.push(resolve('./sheetformer.ts')) + }) + } +})