@@ -14,33 +14,33 @@ export default async function buildModules() {
14
14
const modules = [ ] ;
15
15
configModules . forEach ( ( name ) => {
16
16
const capitalized = capitalizeString ( name ) ;
17
- const jsFilePath = `./src/modules/${ name } /${ name } .js ` ;
17
+ const jsFilePath = `./src/modules/${ name } /${ name } .mjs ` ;
18
18
if ( fs . existsSync ( jsFilePath ) ) {
19
19
modules . push ( { name, capitalized } ) ;
20
20
}
21
21
} ) ;
22
22
23
23
// eslint-disable-next-line
24
24
const modulesPaths = configModules . map ( ( name ) => {
25
- return `./src/modules/${ name } /${ name } .js ` ;
25
+ return `./src/modules/${ name } /${ name } .mjs ` ;
26
26
} ) ;
27
27
28
28
const output = await rollup ( {
29
29
external : [ 'react' , 'vue' ] ,
30
30
input : [
31
- './src/swiper.js ' ,
32
- './src/swiper-bundle.js ' ,
33
- './src/swiper-element.js ' ,
34
- './src/swiper-element-bundle.js ' ,
35
- './src/swiper-vue.js ' ,
36
- './src/swiper-react.js ' ,
31
+ './src/swiper.mjs ' ,
32
+ './src/swiper-bundle.mjs ' ,
33
+ './src/swiper-element.mjs ' ,
34
+ './src/swiper-element-bundle.mjs ' ,
35
+ './src/swiper-vue.mjs ' ,
36
+ './src/swiper-react.mjs ' ,
37
37
...modulesPaths ,
38
38
] ,
39
39
plugins : [
40
40
replace ( {
41
41
delimiters : [ '' , '' ] ,
42
42
'//IMPORT_MODULES' : modules
43
- . map ( ( mod ) => `import ${ mod . capitalized } from './modules/${ mod . name } /${ mod . name } .js ';` )
43
+ . map ( ( mod ) => `import ${ mod . capitalized } from './modules/${ mod . name } /${ mod . name } .mjs ';` )
44
44
. join ( '\n' ) ,
45
45
'//INSTALL_MODULES' : modules . map ( ( mod ) => `${ mod . capitalized } ` ) . join ( ',\n ' ) ,
46
46
'//EXPORT' : 'export default Swiper; export { Swiper }' ,
@@ -54,10 +54,11 @@ export default async function buildModules() {
54
54
await output . write ( {
55
55
dir : `./dist/tmp` ,
56
56
format : 'esm' ,
57
+ entryFileNames : '[name].mjs' ,
57
58
hoistTransitiveImports : false ,
58
59
chunkFileNames : ( i ) => {
59
- if ( i . name === 'swiper' ) return `swiper-core.js ` ;
60
- return `[name].js ` ;
60
+ if ( i . name === 'swiper' ) return `swiper-core.mjs ` ;
61
+ return `[name].mjs ` ;
61
62
} ,
62
63
} ) ;
63
64
@@ -67,24 +68,21 @@ export default async function buildModules() {
67
68
fs . mkdirSync ( `./dist/modules` ) ;
68
69
}
69
70
files . forEach ( ( fileName ) => {
70
- const folderName = fileName . split ( '.js ' ) [ 0 ] ;
71
+ const folderName = fileName . split ( '.mjs ' ) [ 0 ] ;
71
72
if ( fs . existsSync ( `./src/modules/${ folderName } ` ) ) {
72
- if ( ! fs . existsSync ( `./dist/modules/${ folderName } ` ) ) {
73
- fs . mkdirSync ( `./dist/modules/${ folderName } ` ) ;
74
- }
75
- fs . copyFileSync ( `./dist/tmp/${ fileName } ` , `./dist/modules/${ folderName } /${ fileName } ` ) ;
73
+ fs . copyFileSync ( `./dist/tmp/${ fileName } ` , `./dist/modules/${ fileName } ` ) ;
76
74
fs . unlinkSync ( `./dist/tmp/${ fileName } ` ) ;
77
75
} else if (
78
- ( fileName . indexOf ( 'swiper-' ) !== 0 && fileName !== 'swiper.js ' ) ||
79
- fileName === 'swiper-core.js '
76
+ ( fileName . indexOf ( 'swiper-' ) !== 0 && fileName !== 'swiper.mjs ' ) ||
77
+ fileName === 'swiper-core.mjs '
80
78
) {
81
79
if ( ! fs . existsSync ( './dist/shared' ) ) {
82
80
fs . mkdirSync ( './dist/shared' ) ;
83
81
}
84
82
fs . copyFileSync ( `./dist/tmp/${ fileName } ` , `./dist/shared/${ fileName } ` ) ;
85
83
fs . unlinkSync ( `./dist/tmp/${ fileName } ` ) ;
86
84
} else {
87
- fs . copyFileSync ( `./dist/tmp/${ fileName } ` , `./dist/${ fileName . replace ( '.js' , '.mjs' ) } ` ) ;
85
+ fs . copyFileSync ( `./dist/tmp/${ fileName } ` , `./dist/${ fileName } ` ) ;
88
86
fs . unlinkSync ( `./dist/tmp/${ fileName } ` ) ;
89
87
}
90
88
} ) ;
@@ -93,12 +91,14 @@ export default async function buildModules() {
93
91
}
94
92
95
93
// FIX IMPORTS
96
- fs . readdirSync ( './dist/modules' ) . forEach ( ( modName ) => {
97
- const content = fs
98
- . readFileSync ( `./dist/modules/${ modName } /${ modName } .js` , 'utf-8' )
99
- . replace ( / f r o m ' \. \/ / g, `from '../../shared/` ) ;
100
- fs . writeFileSync ( `./dist/modules/${ modName } /${ modName } .js` , content ) ;
101
- } ) ;
94
+ fs . readdirSync ( './dist/modules' )
95
+ . filter ( ( f ) => f . includes ( '.mjs' ) )
96
+ . forEach ( ( modName ) => {
97
+ const content = fs
98
+ . readFileSync ( `./dist/modules/${ modName } ` , 'utf-8' )
99
+ . replace ( / f r o m ' \. \/ / g, `from '../shared/` ) ;
100
+ fs . writeFileSync ( `./dist/modules/${ modName } ` , content ) ;
101
+ } ) ;
102
102
103
103
const { core, bundle, slide } = await getElementStyles ( ) ;
104
104
@@ -110,8 +110,8 @@ export default async function buildModules() {
110
110
content = content
111
111
. replace ( / f r o m ' \. \/ s w i p e r - c o r e / g, `from './shared/swiper-core` )
112
112
. replace (
113
- / i m p o r t ( [ 0 - 9 A - Z a - z ] * ) f r o m ' \. \/ ( [ 0 - 9 a - z - ] * ) .j s ' / g,
114
- `import $1 from './modules/$2/$2.js '` ,
113
+ / i m p o r t ( [ 0 - 9 A - Z a - z ] * ) f r o m ' \. \/ ( [ 0 - 9 a - z - ] * ) .m j s ' / g,
114
+ `import $1 from './modules/$2.mjs '` ,
115
115
) ;
116
116
} else {
117
117
content = content . replace ( / f r o m ' \. \/ / g, `from './shared/` ) ;
@@ -140,25 +140,30 @@ export default async function buildModules() {
140
140
fs . writeFileSync ( `./dist/${ f } ` , `${ banner ( bannerName ) } \n${ content } ` ) ;
141
141
} ) ;
142
142
143
+ // MODULES_INDEX
144
+ fs . writeFileSync (
145
+ './dist/modules/index.mjs' ,
146
+ modules
147
+ . map ( ( mod ) => `export {default as ${ mod . capitalized } } from './${ mod . name } .mjs';` )
148
+ . join ( '\n' ) ,
149
+ ) ;
150
+
143
151
// MINIFY
144
152
await Promise . all ( [
145
153
// MINIFY SHARED
146
154
...fs
147
155
. readdirSync ( './dist/shared' )
148
- . filter ( ( f ) => f . endsWith ( '.js' ) && ! f . includes ( '.min ') )
149
- . map ( ( f ) => minify ( f , `./dist/shared/${ f } ` , true ) ) ,
156
+ . filter ( ( f ) => f . endsWith ( '.mjs ' ) )
157
+ . map ( ( f ) => minify ( f , `./dist/shared/${ f } ` ) ) ,
150
158
// MINIFY MODULES
151
159
...fs
152
160
. readdirSync ( './dist/modules' )
153
- . filter ( ( f ) => f . endsWith ( '.js' ) && ! f . includes ( '.min ') )
154
- . map ( ( f ) => minify ( f , `./dist/modules/${ f } / ${ f } .js` , true ) ) ,
161
+ . filter ( ( f ) => f . endsWith ( '.mjs ' ) )
162
+ . map ( ( f ) => minify ( f , `./dist/modules/${ f } ` ) ) ,
155
163
// MINIFY ROOT
156
164
...fs
157
165
. readdirSync ( './dist/' )
158
- . filter (
159
- ( f ) =>
160
- f . endsWith ( '.mjs' ) && ! f . includes ( '.min' ) && ! f . includes ( 'react' ) && ! f . includes ( 'vue' ) ,
161
- )
166
+ . filter ( ( f ) => f . endsWith ( '.mjs' ) && ! f . includes ( 'react' ) && ! f . includes ( 'vue' ) )
162
167
. map ( ( f ) => {
163
168
const bannerName = f . includes ( 'react' )
164
169
? 'React'
@@ -167,21 +172,20 @@ export default async function buildModules() {
167
172
: f . includes ( 'element' )
168
173
? 'Custom Element'
169
174
: '' ;
170
- return minify ( f , `./dist/${ f } ` , false , bannerName ) ;
175
+ return minify ( f , `./dist/${ f } ` , bannerName ) ;
171
176
} ) ,
172
177
] ) ;
173
178
174
179
// IIFE
175
180
const replaceExports = { } ;
176
181
[ 'swiper-bundle.mjs' , 'swiper.mjs' ] . forEach ( ( f ) => {
177
182
const content = fs . readFileSync ( `./dist/${ f } ` , 'utf-8' ) ;
178
- const line = content
179
- . split ( '\n' )
180
- . filter ( ( l ) => l . includes ( 'export {' ) ) [ 0 ]
181
- . trim ( ) ;
183
+ const before = content . match ( / e x p o r t { ( [ ^ , ] * ) , ( [ ^ } ] * ) } / ) [ 0 ] ;
184
+ const after = before . replace ( / e x p o r t { ( [ ^ , ] * ) , ( [ ^ } ] * ) } / , `export {$2}` ) ;
185
+
182
186
replaceExports [ f ] = {
183
- before : line ,
184
- after : line . replace ( / e x p o r t { ( [ ^ , ] * ) , ( [ ^ } ] * ) } / , `export { $2 }` ) ,
187
+ before,
188
+ after,
185
189
} ;
186
190
fs . writeFileSync (
187
191
`./dist/${ f } ` ,
@@ -198,7 +202,7 @@ export default async function buildModules() {
198
202
replace ( {
199
203
preventAssignment : true ,
200
204
delimiters : [ '' , '' ] ,
201
- 'export { SwiperContainer, SwiperSlide, register };' : 'register()' ,
205
+ 'export{ SwiperContainer,SwiperSlide,register};' : 'register(); ' ,
202
206
} ) ,
203
207
] ,
204
208
} ) ;
@@ -224,7 +228,7 @@ export default async function buildModules() {
224
228
await Promise . all (
225
229
[ 'swiper-bundle.js' , 'swiper.js' , 'swiper-element.js' , 'swiper-element-bundle.js' ] . map ( ( f ) => {
226
230
const bannerName = f . includes ( 'element' ) ? 'Custom Element' : '' ;
227
- return minify ( f , `./dist/${ f } ` , false , bannerName ) ;
231
+ return minify ( f , `./dist/${ f } ` , bannerName ) ;
228
232
} ) ,
229
233
) ;
230
234
}
0 commit comments