@@ -26,7 +26,8 @@ PACKAGES=(core
26
26
benchpress)
27
27
28
28
NODE_PACKAGES=(compiler-cli
29
- benchpress)
29
+ benchpress
30
+ tsc-wrapped)
30
31
31
32
BUILD_ALL=true
32
33
BUNDLE=true
@@ -107,76 +108,36 @@ containsElement () {
107
108
return 1
108
109
}
109
110
110
- # ######################################
111
- # Downlevel ES2015 to ESM/ES5
112
- # Arguments:
113
- # param1 - Source folder
114
- # param2 - Naming suffix to apply. Must end in ".ts" (defaults to .es5.ts)
115
- # Returns:
116
- # None
117
- # ######################################
118
- downlevelES2015 () {
119
- # Iterate over the files in this directory, converting to .es5.ts
120
- regex=" (.+).js"
121
- for file in ${1} /* .js ; do
122
- if [[ ${file} =~ $regex ]]; then
123
- ts_file=" ${BASH_REMATCH[1]}${2:- " .es5.ts" } "
124
- cp ${file} ${ts_file}
125
-
126
- echo " ====== $TSC ${ts_file} --target es5 --module es2015 --noLib --sourceMap --importHelpers"
127
- ($TSC ${ts_file} --target es5 --module es2015 --noLib --sourceMap --importHelpers) > /dev/null 2>&1 || true
128
- mapSources " ${BASH_REMATCH[1]}${2:- " .es5.js" } "
129
- rm -f ${ts_file}
130
- fi
131
- done
132
-
133
- # Recurse for sub directories
134
- for DIR in ${1} /* ; do
135
- isIgnoredDirectory ${DIR} && continue
136
- downlevelES2015 ${DIR}
137
- done
138
- }
139
-
140
111
# ######################################
141
112
# Rollup index files recursively, ignoring blacklisted directories
142
113
# Arguments:
143
114
# param1 - Base source folder
144
115
# param2 - Destination directory
145
- # param3 - Config file
146
116
# Returns:
147
117
# None
148
118
# ######################################
149
119
rollupIndex () {
150
120
# Iterate over the files in this directory, rolling up each into ${2} directory
151
121
local regex=" .+/(.+)/index.js"
152
- if [[ " ${1} /index.js" =~ $regex ]]; then
153
- in_file=" ${1} /index.js"
154
- out_file=" ${2} /${BASH_REMATCH[1]} .js"
122
+ in_file=" ${1} /index.js"
123
+ out_file=" ${2} /index.js"
155
124
156
- echo " ====== $ROLLUP -i ${in_file} -o ${out_file} "
125
+ BANNER_TEXT= ` cat ${LICENSE_BANNER} `
157
126
158
- if [[ -f " ${3} " ]]; then
159
- $ROLLUP -i ${in_file} -o ${out_file} -c ${3} --sourcemap
160
- else
161
- $ROLLUP -i ${in_file} -o ${out_file} --sourcemap
162
- fi
163
- cat ${LICENSE_BANNER} > ${out_file} .tmp
164
- cat ${out_file} >> ${out_file} .tmp
165
- mv ${out_file} .tmp ${out_file}
166
-
167
- mapSources " ${out_file} "
168
-
169
- # Recurse for sub directories
170
- for DIR in ${1} /* ; do
171
- isIgnoredDirectory ${DIR} && continue
172
- # NOTE: We need to re-run this regex and use the new match as Bash doesn't have closures
173
- if [[ " ${1} /index.js" =~ $regex ]]; then
174
- rollupIndex ${DIR} ${2} /${BASH_REMATCH[1]} " $( dirname $3 ) /${BASH_REMATCH[1]} /rollup.config.js"
175
- fi
176
- done
127
+ if [[ -f ${in_file} ]]; then
128
+ echo " =========== $ROLLUP -i ${in_file} -o ${out_file} -c ${ROOT_DIR} /rollup.config.js --sourcemap"
129
+ $ROLLUP -i ${in_file} -o ${out_file} --sourcemap -f es --banner " $BANNER_TEXT " > /dev/null 2>&1
177
130
fi
178
- }
179
131
132
+ # Recurse for sub directories
133
+ for DIR in ${1} /* ; do
134
+ isIgnoredDirectory ${DIR} && continue
135
+ # NOTE: We need to re-run this regex and use the new match as Bash doesn't have closures
136
+ if [[ " ${DIR} /index.js" =~ $regex ]]; then
137
+ rollupIndex ${DIR} ${2} /${BASH_REMATCH[1]}
138
+ fi
139
+ done
140
+ }
180
141
181
142
# ######################################
182
143
# Recursively runs rollup on any entry point that has a "rollup.config.js" file
@@ -186,17 +147,11 @@ rollupIndex() {
186
147
# None
187
148
# ######################################
188
149
runRollup () {
189
- local regex=" dest: ['\" ](.+)['\" ],*"
190
150
if [[ -f " ${1} /rollup.config.js" ]]; then
191
151
cd ${1}
192
152
193
153
echo " ====== $ROLLUP -c ${1} /rollup.config.js"
194
- $ROLLUP -c rollup.config.js --sourcemap
195
-
196
- local dest_line=$( cat " ${1} /rollup.config.js" | grep ' dest:' )
197
- if [[ ${dest_line} =~ $regex ]]; then
198
- mapSources " ${BASH_REMATCH[1]} "
199
- fi
154
+ $ROLLUP -c rollup.config.js --sourcemap > /dev/null 2>&1
200
155
201
156
# Recurse for sub directories
202
157
for DIR in ${1} /* ; do
@@ -241,7 +196,6 @@ minify() {
241
196
if [[ " ${base_file} " =~ $regex && " ${base_file##* .} " != " map" ]]; then
242
197
local out_file=$( dirname " ${file} " ) /${BASH_REMATCH[1]} .min.js
243
198
$UGLIFYJS -c --screw-ie8 --comments -o ${out_file} --source-map ${out_file} .map --source-map-include-sources ${file}
244
- mapSources " ${out_file} "
245
199
fi
246
200
done
247
201
}
@@ -252,19 +206,18 @@ minify() {
252
206
# param1 - Source directory
253
207
# param2 - Out dir
254
208
# param3 - Package Name
255
- # param4 - Is child (are we recursing?)
256
209
# Returns:
257
210
# None
258
211
# ######################################
259
212
compilePackage () {
260
213
echo " ====== [${3} ]: COMPILING: ${NGC} -p ${1} /tsconfig-build.json"
261
214
# For NODE_PACKAGES items (not getting rolled up)
262
- if containsElement " ${PACKAGE } " " ${NODE_PACKAGES[@]} " ; then
215
+ if containsElement " ${3 } " " ${NODE_PACKAGES[@]} " ; then
263
216
$TSC -p ${1} /tsconfig-build.json
264
217
else
265
218
local package_name=$( basename " ${2} " )
266
219
$NGC -p ${1} /tsconfig-build.json
267
- echo " ====== Create ${1} /../${package_name} .d.ts re-export file for Closure "
220
+ echo " ====== Create ${1} /../${package_name} .d.ts re-export file for tsickle "
268
221
echo " $( cat ${LICENSE_BANNER} ) ${N} export * from './${package_name} /index'" > ${2} /../${package_name} .d.ts
269
222
echo " {\" __symbolic\" :\" module\" ,\" version\" :3,\" metadata\" :{},\" exports\" :[{\" from\" :\" ./${package_name} /index\" }],\" flatModuleIndexRedirect\" :true}" > ${2} /../${package_name} .metadata.json
270
223
fi
@@ -274,24 +227,31 @@ compilePackage() {
274
227
BASE_DIR=$( basename " ${DIR} " )
275
228
# Skip over directories that are not nested entry points
276
229
[[ -e ${DIR} /tsconfig-build.json && " ${BASE_DIR} " != " integrationtest" ]] || continue
277
- compilePackage ${DIR} ${2} /${BASE_DIR} ${3} true
230
+ compilePackage ${DIR} ${2} /${BASE_DIR} ${3}
278
231
done
279
232
}
280
233
281
234
# ######################################
282
- # Moves typings and metadata files appropriately
235
+ # Recursively compile package
283
236
# Arguments:
284
- # param1 - Source of typings & metadata files
285
- # param2 - Root of destination directory
286
- # param3 - Package name (needed to correspond to name of d.ts and metadata.json files)
237
+ # param1 - Source directory
238
+ # param2 - Out dir
239
+ # param3 - Package Name
287
240
# Returns:
288
241
# None
289
242
# ######################################
290
- moveTypings () {
291
- if [[ -f ${1} /index.d.ts && -f ${1} /index.metadata.json ]]; then
292
- mv ${1} /index.d.ts ${1} /${2} .d.ts
293
- mv ${1} /index.metadata.json ${1} /${2} .metadata.json
294
- fi
243
+ compilePackageES5 () {
244
+ echo " ====== [${3} ]: COMPILING: ${NGC} -p ${1} /tsconfig-build.json --target es5 -d false --outDir ${2} --importHelpers true --sourceMap"
245
+ local package_name=$( basename " ${2} " )
246
+ $NGC -p ${1} /tsconfig-build.json --target es5 -d false --outDir ${2} --importHelpers true --sourceMap
247
+
248
+ for DIR in ${1} /* ; do
249
+ [ -d " ${DIR} " ] || continue
250
+ BASE_DIR=$( basename " ${DIR} " )
251
+ # Skip over directories that are not nested entry points
252
+ [[ -e ${DIR} /tsconfig-build.json && " ${BASE_DIR} " != " integrationtest" ]] || continue
253
+ compilePackageES5 ${DIR} ${2} ${3}
254
+ done
295
255
}
296
256
297
257
# ######################################
@@ -314,19 +274,6 @@ addNgcPackageJson() {
314
274
done
315
275
}
316
276
317
- # ######################################
318
- # This is read by NGC to be able to find the flat module index.
319
- # Arguments:
320
- # param1 - JavaScript file on which to re-map sources
321
- # Returns:
322
- # None
323
- # ######################################
324
- mapSources () {
325
- if [[ -f " ${1} .map" ]]; then
326
- $MAP_SOURCES -f " ${1} "
327
- fi
328
- }
329
-
330
277
updateVersionReferences () {
331
278
NPM_DIR=" $1 "
332
279
(
@@ -343,8 +290,7 @@ echo "====== BUILDING: Version ${VERSION}"
343
290
N="
344
291
"
345
292
TSC=` pwd` /node_modules/.bin/tsc
346
- NGC=" node --max-old-space-size=3000 dist/packages-dist/tsc-wrapped/src/main"
347
- MAP_SOURCES=" node ` pwd` /scripts/build/map_sources.js "
293
+ NGC=" node --max-old-space-size=3000 ` pwd` /dist/packages-dist/tsc-wrapped/src/main"
348
294
UGLIFYJS=` pwd` /node_modules/.bin/uglifyjs
349
295
TSCONFIG=./tools/tsconfig.json
350
296
ROLLUP=` pwd` /node_modules/.bin/rollup
446
392
SRC_DIR=${ROOT_DIR} /${PACKAGE}
447
393
ROOT_OUT_DIR=${PWD} /dist/packages
448
394
OUT_DIR=${ROOT_OUT_DIR} /${PACKAGE}
395
+ OUT_DIR_ESM5=${ROOT_OUT_DIR} /${PACKAGE} /esm5
449
396
NPM_DIR=${PWD} /dist/packages-dist/${PACKAGE}
450
- MODULES_DIR=${NPM_DIR} /@angular
397
+ ESM15_DIR=${NPM_DIR} /esm15
398
+ ESM5_DIR=${NPM_DIR} /esm5
451
399
BUNDLES_DIR=${NPM_DIR} /bundles
452
400
453
401
LICENSE_BANNER=${ROOT_DIR} /license-banner.txt
466
414
467
415
echo " ====== Copy ${PACKAGE} typings"
468
416
rsync -a --exclude=* .js --exclude=* .js.map ${OUT_DIR} / ${NPM_DIR}
469
- moveTypings ${NPM_DIR} ${PACKAGE}
470
417
471
418
(
472
419
cd ${SRC_DIR}
473
420
echo " ====== Rollup ${PACKAGE} "
474
- rollupIndex ${OUT_DIR} ${MODULES_DIR } ${ROOT_DIR}
421
+ rollupIndex ${OUT_DIR} ${ESM15_DIR } ${ROOT_DIR}
475
422
476
- echo " ====== Downleveling ES2015 to ESM/ES5"
477
- downlevelES2015 ${MODULES_DIR}
423
+ echo " ====== Produce ESM5 version"
424
+ compilePackageES5 ${SRC_DIR} ${OUT_DIR_ESM5} ${PACKAGE}
425
+ rollupIndex ${OUT_DIR_ESM5} ${ESM5_DIR} ${ROOT_DIR}
478
426
479
427
echo " ====== Run rollup conversions on ${PACKAGE} "
480
428
runRollup ${SRC_DIR}
0 commit comments