UNPKG

nuxt3-swiper

Version:
173 lines (169 loc) 4.52 kB
import * as swiperModulesImports from 'swiper/modules'; import { defineNuxtModule, addComponent, addImports, extendViteConfig } from '@nuxt/kit'; const name$1 = "nuxt3-swiper"; const version$1 = "1.2.0"; const keywords = [ "vue", "nuxt", "nuxt3", "nuxt-module", "swiper", "swiperjs", "slides", "slickjs alternative" ]; const license = "MIT"; const type = "module"; const repository = "luoxiangfan/nuxt-swiper"; const homepage = "https://github.com/luoxiangfan/nuxt-swiper#readme"; const author = { name: "cpreston321 <https://christianpreston.com>", url: "https://github.com/cpreston321" }; const exports = { ".": { types: "./dist/types.d.ts", "import": "./dist/module.mjs", require: "./dist/module.cjs" }, "./types": "./dist/types.d.ts" }; const main = "./dist/module.cjs"; const types = "./dist/types.d.ts"; const files = [ "dist" ]; const scripts = { build: "nuxt-module-build build", dev: "nuxt-module-build build --stub && nuxi dev .playground", "dev:build": "nuxt-module-build build --stub && nuxi build .playground", "type-check": "tsc --strict --noEmit", lint: "eslint . -c eslint.config.js", "lint:fix": "eslint . -c eslint.config.js --fix", test: "vitest run", release: "npm run build && npm publish" }; const dependencies = { "@nuxt/kit": "^3.15.4", swiper: "^11.2.5" }; const devDependencies = { "@nuxt/module-builder": "^0.8.4", "@nuxt/test-utils": "^3.17.1", eslint: "^9.21.0", nuxt: "^3.15.4", typescript: "^5.8.2", vitest: "^3.0.7" }; const resolutions = { "nuxt3-swiper": "link:." }; const packageManager = "pnpm@10.5.2"; const packageConfig = { name: name$1, version: version$1, keywords: keywords, license: license, type: type, repository: repository, homepage: homepage, author: author, exports: exports, main: main, types: types, files: files, scripts: scripts, dependencies: dependencies, devDependencies: devDependencies, resolutions: resolutions, packageManager: packageManager }; const { name, version } = packageConfig; const module = defineNuxtModule({ meta: { name, version, configKey: "swiper" }, defaults: { prefix: "Swiper", styleLang: "css", modules: "*" }, hooks: { "prepare:types": (ctx) => { ctx.tsConfig.compilerOptions ||= {}; ctx.tsConfig.compilerOptions.types ||= []; ctx.tsConfig.compilerOptions.types.push("swiper/vue"); ctx.references.push({ types: "swiper/vue" }); } }, setup(_options, nuxt) { const { styleLang, prefix, modules } = _options; const cssImports = [`swiper/${styleLang}`]; const componentImports = ["Swiper", "SwiperSlide"]; const moduleImports = [ { name: "useSwiper", as: "useSwiper", from: "swiper/vue" }, { name: "useSwiperSlide", as: "useSwiperSlide", from: "swiper/vue" } ]; for (const [key, _] of Object.entries(swiperModulesImports)) { const snakeCase = key.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").replace(/^-/, "").toLowerCase(); const hasModule = modules === "*" || Array.isArray(modules) && modules.includes(snakeCase); if (hasModule && !["default", "Swiper"].includes(key)) { const noCssInModules = [ "autoplay", "controller", "effect-coverflow", "hash-navigation", "history", "keyboard", "manipulation", "mousewheel", "parallax", "thumbs" ]; if (!noCssInModules.includes(snakeCase)) { cssImports.push(`swiper/${styleLang}/${snakeCase}`); } moduleImports.push({ name: key, as: `${prefix}${key}`, from: "swiper/modules" }); } } for (const cName of componentImports) { addComponent({ name: cName, export: cName, filePath: "swiper/vue" }); } addImports(moduleImports); nuxt.options.css = [...nuxt.options.css, ...cssImports]; extendViteConfig((config) => { config.build = config.build || {}; config.build.rollupOptions = config.build.rollupOptions || {}; config.build.rollupOptions.output = config.build.rollupOptions.output || {}; config.build.rollupOptions.output = { ...config.build.rollupOptions.output, manualChunks: (id) => { if (id.includes("/node_modules/swiper")) { return "swiper-vue"; } } }; }); } }); export { module as default };