From 7a1782128125bda394b40ea9d1235d789964bfa3 Mon Sep 17 00:00:00 2001 From: Vladimir Kharlampidi Date: Fri, 23 Jun 2023 14:44:50 +0300 Subject: [PATCH] feat: rename package files `.esm.js` to `.mjs` --- scripts/build-browser-modules.js | 6 +++--- scripts/build-element.js | 14 +++++++------- scripts/build-js-bundle.js | 15 ++++++++------- scripts/build-js-core.js | 4 ++-- scripts/build.js | 2 +- src/copy/package.json | 26 +++++++++++++------------- 6 files changed, 34 insertions(+), 33 deletions(-) diff --git a/scripts/build-browser-modules.js b/scripts/build-browser-modules.js index 90881cb41..b57c4e34f 100644 --- a/scripts/build-browser-modules.js +++ b/scripts/build-browser-modules.js @@ -48,15 +48,15 @@ export default async function buildBrowserModules() { code = code .replace(/from"\.\//g, 'from"./modules/_chunks/') .replace(/import"\.\//g, 'import"./modules/_chunks/'); - fs.writeFileSync(`./${outputDir}/swiper.esm.browser.js`, code); + fs.writeFileSync(`./${outputDir}/swiper.browser.mjs`, code); } else if (folders.includes(folder)) { code = code .replace(/from"\.\//g, 'from"../_chunks/') .replace(/import"\.\//g, 'import"../_chunks/'); - fs.writeFileSync(`./${outputDir}/modules/${folder}/${folder}.esm.browser.js`, code); + fs.writeFileSync(`./${outputDir}/modules/${folder}/${folder}.browser.mjs`, code); } else { - fs.writeFileSync(`./${outputDir}/modules/_chunks/${file}`, code); + fs.writeFileSync(`./${outputDir}/modules/_chunks/${file.replace('.js', '.mjs')}`, code); } fs.unlinkSync(`./${outputDir}/browser-modules/${file}`); } diff --git a/scripts/build-element.js b/scripts/build-element.js index 79e2aef73..25c9ccf4b 100644 --- a/scripts/build-element.js +++ b/scripts/build-element.js @@ -188,27 +188,27 @@ export default async function buildElement() { .replace('//IMPORT_SWIPER', `import Swiper from 'swiper/bundle';`) .replace('//EXPORT', `export { SwiperContainer, SwiperSlide, register };`); - fs.writeFileSync(path.resolve(outputDir, 'element/swiper-element-bundle.js'), esmBundleContent); + fs.writeFileSync(path.resolve(outputDir, 'element/swiper-element-bundle.mjs'), esmBundleContent); const esmContent = elementContent .replace('//SWIPER_STYLES', `const SwiperCSS = \`${cssStylesCore}\`;`) .replace('//SWIPER_SLIDE_STYLES', `const SwiperSlideCSS = \`${cssStylesSlide}\`;`) .replace('//IMPORT_SWIPER', `import Swiper from 'swiper';`) .replace('//EXPORT', `export { SwiperContainer, SwiperSlide, register };`); - fs.writeFileSync(path.resolve(outputDir, 'element/swiper-element.js'), esmContent); + fs.writeFileSync(path.resolve(outputDir, 'element/swiper-element.mjs'), esmContent); // Browser const browser = async (isBundle) => { const suffix = isBundle ? '-bundle' : ''; const bundle = await rollup({ - input: `${outputDir}/element/swiper-element${suffix}.js`, + input: `${outputDir}/element/swiper-element${suffix}.mjs`, plugins: [ replace({ delimiters: ['', ''], '//SWIPER_STYLES': `const SwiperCSS = \`${cssStylesBundle}\`;`, '//SWIPER_SLIDE_STYLES': `const SwiperSlideCSS = \`${cssStylesSlide}\`;`, - [`import Swiper from 'swiper/bundle';`]: `import Swiper from '../swiper-bundle.esm.js';`, - [`import Swiper from 'swiper';`]: `import Swiper from '../swiper.esm.js';`, + [`import Swiper from 'swiper/bundle';`]: `import Swiper from '../swiper-bundle.mjs';`, + [`import Swiper from 'swiper';`]: `import Swiper from '../swiper.mjs';`, '//BROWSER_REGISTER': `register()`, 'export { SwiperContainer, SwiperSlide, register };': ``, }), @@ -245,6 +245,6 @@ export default async function buildElement() { await browser(); await browser(true); - addBannerToFile(path.resolve(outputDir, 'element/swiper-element-bundle.js'), 'Custom Element'); - addBannerToFile(path.resolve(outputDir, 'element/swiper-element.js'), 'Custom Element'); + addBannerToFile(path.resolve(outputDir, 'element/swiper-element-bundle.mjs'), 'Custom Element'); + addBannerToFile(path.resolve(outputDir, 'element/swiper-element.mjs'), 'Custom Element'); } diff --git a/scripts/build-js-bundle.js b/scripts/build-js-bundle.js index 3f3998f1b..15880385e 100644 --- a/scripts/build-js-bundle.js +++ b/scripts/build-js-bundle.js @@ -19,7 +19,8 @@ async function buildEntry(modules, format, browser = false) { const needSourceMap = isProd && (isUMD || (isESM && browser)); const external = isUMD || browser ? [] : () => true; let filename = 'swiper-bundle'; - if (isESM) filename += `.esm`; + let fileExt = '.js'; + if (isESM) fileExt = `.mjs`; if (isESM && browser) filename += '.browser'; return rollup({ @@ -45,9 +46,9 @@ async function buildEntry(modules, format, browser = false) { name: 'Swiper', strict: true, sourcemap: needSourceMap, - sourcemapFile: `./${outputDir}/${filename}.js.map`, + sourcemapFile: `./${outputDir}/${filename}${fileExt}.map`, banner: banner(), - file: `./${outputDir}/${filename}.js`, + file: `./${outputDir}/${filename}${fileExt}`, }), ) .then(async (bundle) => { @@ -58,8 +59,8 @@ async function buildEntry(modules, format, browser = false) { const { code, map } = await minify(result.code, { sourceMap: { content: needSourceMap ? result.map : undefined, - filename: needSourceMap ? `${filename}.min.js` : undefined, - url: `${filename}.min.js.map`, + filename: needSourceMap ? `${filename}.min${fileExt}` : undefined, + url: `${filename}.min${fileExt}.map`, }, output: { preamble: banner(), @@ -67,8 +68,8 @@ async function buildEntry(modules, format, browser = false) { }).catch((err) => { console.error(`Terser failed on file ${filename}: ${err.toString()}`); }); - await fs.writeFile(`./${outputDir}/${filename}.min.js`, code); - await fs.writeFile(`./${outputDir}/${filename}.min.js.map`, map); + await fs.writeFile(`./${outputDir}/${filename}.min${fileExt}`, code); + await fs.writeFile(`./${outputDir}/${filename}.min${fileExt}.map`, map); }) .then(async () => { if (isProd && isESM && browser === false) return buildEntry(modules, format, true); diff --git a/scripts/build-js-core.js b/scripts/build-js-core.js index f51bbe2be..0a54949cb 100644 --- a/scripts/build-js-core.js +++ b/scripts/build-js-core.js @@ -11,7 +11,7 @@ import { capitalizeString } from './utils/helper.js'; const exec = execSh.promise; async function buildCore(modules) { - const filename = `swiper.esm`; + const filename = `swiper`; const coreContent = [ banner(), `export { default as Swiper, default } from './core/core.js';`, @@ -21,7 +21,7 @@ async function buildCore(modules) { ), ].join('\n'); await Promise.all([ - fs.writeFile(`./${outputDir}/${filename}.js`, coreContent), + fs.writeFile(`./${outputDir}/${filename}.mjs`, coreContent), exec( `npx babel src --out-dir ${outputDir} --config-file ./scripts/babel/babel.config.core.json`, ), diff --git a/scripts/build.js b/scripts/build.js index 7413239fe..4c8d1602b 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -51,9 +51,9 @@ class Build { .add('types', buildTypes) .add('styles', buildStyles) .add('core', buildJsCore) - .add('browser-modules', buildBrowserModules) .add('bundle', buildJsBundle) .add('element', buildElement) + .add('browser-modules', buildBrowserModules) .add('react', buildReact) .add('vue', buildVue) .run(); diff --git a/src/copy/package.json b/src/copy/package.json index 0ab604473..da966b881 100644 --- a/src/copy/package.json +++ b/src/copy/package.json @@ -4,28 +4,28 @@ "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", "typings": "swiper.d.ts", "type": "module", - "main": "./swiper.esm.js", - "module": "./swiper.esm.js", + "main": "./swiper.mjs", + "module": "./swiper.mjs", "exports": { ".": { "types": "./swiper.d.ts", - "default": "./swiper.esm.js" + "default": "./swiper.mjs" }, "./core": { "types": "./swiper.d.ts", - "default": "./swiper.esm.js" + "default": "./swiper.mjs" }, - "./swiper.esm.js": { + "./swiper.mjs": { "types": "./swiper.d.ts", - "default": "./swiper.esm.js" + "default": "./swiper.mjs" }, "./bundle": { "types": "./swiper.d.ts", - "default": "./swiper-bundle.esm.js" + "default": "./swiper-bundle.mjs" }, - "./swiper-bundle.esm.js": { + "./swiper-bundle.mjs": { "types": "./swiper.d.ts", - "default": "./swiper-bundle.esm.js" + "default": "./swiper-bundle.mjs" }, "./css": "./swiper.min.css", "./swiper.min.css": "./swiper.min.css", @@ -106,15 +106,15 @@ "./scss/zoom": "./modules/zoom/zoom.scss", "./element": { "types": "./element/swiper-element.d.ts", - "default": "./element/swiper-element.js" + "default": "./element/swiper-element.mjs" }, "./element/bundle": { "types": "./element/swiper-element.d.ts", - "default": "./element/swiper-element-bundle.js" + "default": "./element/swiper-element-bundle.mjs" }, "./element-bundle": { "types": "./element/swiper-element.d.ts", - "default": "./element/swiper-element-bundle.js" + "default": "./element/swiper-element-bundle.mjs" }, "./element/css": "./swiper-element.min.css", "./swiper-element.min.css": "./swiper-element.min.css", @@ -217,4 +217,4 @@ "ssr-window": "^4.0.2" }, "releaseDate": "June 23, 2023" -} +} \ No newline at end of file