nuxt3-swiper
Version:
<h1 align="center">nuxt3-swiper</h1>
173 lines (169 loc) • 4.52 kB
JavaScript
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 };