From 478289ce2ca8fc857434da65182b1bd14c3447c4 Mon Sep 17 00:00:00 2001 From: Vladimir Kharlampidi Date: Thu, 4 Mar 2021 19:15:56 +0300 Subject: [PATCH] fix(svelte): fix Svelte cjs exports fixes #4297 --- scripts/build-svelte.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/scripts/build-svelte.js b/scripts/build-svelte.js index e34e296c6..1f25f8f5d 100644 --- a/scripts/build-svelte.js +++ b/scripts/build-svelte.js @@ -10,17 +10,28 @@ module.exports = async (format, outputDir) => { await exec.promise( `cross-env MODULES=${format} npx babel --config-file ./babel.config.svelte.js src/svelte --out-dir ${outputDir}/${format}/svelte`, ); - await exec.promise( - `cross-env MODULES=${format} npx babel --config-file ./babel.config.svelte.js src/swiper-svelte.js --out-file ${outputDir}/swiper-svelte.${format}.js`, - ); + if (format === 'esm') { + await exec.promise( + `cross-env MODULES=${format} npx babel --config-file ./babel.config.svelte.js src/swiper-svelte.js --out-file ${outputDir}/swiper-svelte.${format}.js`, + ); - // Fix import paths - let fileContent = await fs.readFile(`./${outputDir}/swiper-svelte.${format}.js`, 'utf-8'); - fileContent = fileContent - .replace(/require\(".\/svelte\//g, `require("./${format}/svelte/`) - .replace(/from '.\/svelte\//g, `from './${format}/svelte/`); - fileContent = `${bannerSvelte}\n${fileContent}`; - fs.writeFileSync(`./${outputDir}/swiper-svelte.${format}.js`, fileContent); + // Fix import paths + let fileContent = await fs.readFile(`./${outputDir}/swiper-svelte.${format}.js`, 'utf-8'); + fileContent = fileContent + .replace(/require\(".\/svelte\//g, `require("./${format}/svelte/`) + .replace(/from '.\/svelte\//g, `from './${format}/svelte/`); + fileContent = `${bannerSvelte}\n${fileContent}`; + fs.writeFileSync(`./${outputDir}/swiper-svelte.${format}.js`, fileContent); + } else { + const fileContent = [ + bannerSvelte, + '"use strict";', + 'exports.__esModule = true;', + 'exports.Swiper = require("./cjs/svelte/swiper").default;', + 'exports.SwiperSlide = require("./cjs/svelte/swiper-slide").default;', + ].join('\n'); + fs.writeFileSync(`./${outputDir}/swiper-svelte.${format}.js`, fileContent); + } // Transform svelte files let swiper = await fs.readFile('./src/svelte/swiper.svelte', 'utf8');