@@ -61,7 +61,7 @@ const closureDefines = [
61
61
* @param {string } prefix prefix to the compiled code
62
62
* @param {string } suffix suffix to the compiled code
63
63
*/
64
- function createBuildTask ( filename , prefix , suffix ) {
64
+ function createBuildTask ( filename , prefix , suffix , language_out = 'ES5' ) {
65
65
return function closureBuild ( ) {
66
66
return gulp
67
67
. src (
@@ -83,7 +83,7 @@ function createBuildTask(filename, prefix, suffix) {
83
83
resolve ( __dirname , './externs/overrides.js' ) ,
84
84
resolve ( __dirname , './externs/module.js' )
85
85
] ,
86
- language_out : 'ES5' ,
86
+ language_out,
87
87
dependency_mode : 'PRUNE' ,
88
88
define : closureDefines
89
89
} )
@@ -93,15 +93,15 @@ function createBuildTask(filename, prefix, suffix) {
93
93
} ;
94
94
}
95
95
96
- function createRollupTask ( inputPath ) {
96
+ function createRollupTask ( inputPath , outputExtension ) {
97
97
return async function rollupBuild ( ) {
98
98
const inputOptions = {
99
99
input : inputPath ,
100
100
plugins : [ rollupSourcemaps ( ) , commonjs ( ) ]
101
101
} ;
102
102
103
103
const outputOptions = {
104
- file : ' dist/index.esm .js' ,
104
+ file : ` dist/index.${ outputExtension } .js` ,
105
105
format : 'es' ,
106
106
sourcemap : true
107
107
} ;
@@ -126,11 +126,21 @@ gulp.task('cjs', cjsBuild);
126
126
// esm build
127
127
// 1) Do closure compile without any wrapping code.
128
128
// 2) Use rollup to convert result to ESM format.
129
- // 3) Delete intermediate files.
130
129
const intermediateEsmFile = 'temp/esm.js' ;
131
130
const intermediateEsmPath = resolve ( __dirname , 'dist/' , intermediateEsmFile ) ;
132
131
const esmBuild = createBuildTask ( intermediateEsmFile , '' , '' ) ;
133
- const rollupTask = createRollupTask ( intermediateEsmPath ) ;
134
- gulp . task ( 'esm' , gulp . series ( esmBuild , rollupTask , deleteIntermediateFiles ) ) ;
132
+ const rollupTask = createRollupTask ( intermediateEsmPath , 'esm' ) ;
133
+ gulp . task ( 'esm' , gulp . series ( esmBuild , rollupTask ) ) ;
135
134
136
- gulp . task ( 'default' , gulp . parallel ( 'cjs' , 'esm' ) ) ;
135
+ // esm 2017 build
136
+ // 1) Do closure compile with language set to ES2017, without any wrapping code.
137
+ // 2) Use rollup to convert result to ESM format.
138
+ const intermediateEsm2017File = 'temp/esm2017.js' ;
139
+ const intermediateEsm2017Path = resolve ( __dirname , 'dist/' , intermediateEsm2017File ) ;
140
+ const esm2017Build = createBuildTask ( intermediateEsm2017File , '' , '' , 'ECMASCRIPT_2017' ) ;
141
+ const rollup2017Task = createRollupTask ( intermediateEsm2017Path , 'esm2017' ) ;
142
+ gulp . task ( 'esm2017' , gulp . series ( esm2017Build , rollup2017Task ) ) ;
143
+
144
+ gulp . task ( 'buildAll' , gulp . parallel ( 'cjs' , 'esm' , 'esm2017' ) ) ;
145
+
146
+ gulp . task ( 'default' , gulp . series ( 'buildAll' , deleteIntermediateFiles ) ) ;
0 commit comments