Skip to content

Commit 0d9412a

Browse files
committed
Merge remote-tracking branch 'qu1x/minify-in-parallel_compress-mangle-js-es6+'
2 parents 0f66d95 + 33e4e6d commit 0d9412a

File tree

2 files changed

+89
-96
lines changed

2 files changed

+89
-96
lines changed

build.sh

+44-48
Original file line numberDiff line numberDiff line change
@@ -140,61 +140,57 @@ EOF
140140

141141
do_js_compress()
142142
{
143-
echo "Compressing Javascript files..."
144-
uglifyjs_arg1="$1"
145-
uglifyjs_arg2="$2"
146-
143+
num_terser_threads=1
144+
if [ "$num_build_threads" != "unspecified" ]; then
145+
num_terser_threads=$num_build_threads
146+
fi
147+
echo "Compressing/Mangling JavaScript files ($num_terser_threads threads)..."
148+
terser_arg1="$1"
149+
terser_arg2="$2"
150+
package_dir="$top_dir/package-prepare"
147151
rm -rf "$compress_js_dir"
148152
mkdir "$compress_js_dir"
149-
escaped_package_dir=$(echo "$top_dir/package-prepare/" | sed 's/\//\\\//g' | sed 's/\-/\\-/g' ) ;
150-
for jsdir in $(find "${top_dir}/package-prepare" -path "*/www/js") ; do
151-
pkg_rel_path=$(echo $jsdir | sed "s/$escaped_package_dir//g");
152-
mkdir -p "$compress_js_dir/$pkg_rel_path"
153-
cp "$jsdir/"*.js "$compress_js_dir/$pkg_rel_path/"
154-
cd "$compress_js_dir/$pkg_rel_path/"
155-
156-
for jsf in *.js ; do
157-
if [ -n "$uglifyjs_arg2" ] ; then
158-
"$uglifyjs_arg1" "$uglifyjs_arg2" "$jsf" > "$jsf.cmp"
159-
else
160-
"$uglifyjs_arg1" "$jsf" > "$jsf.cmp"
161-
fi
162-
mv "$jsf.cmp" "$jsf"
163-
done
164-
done
165-
cp -r "$compress_js_dir"/* "$top_dir/package-prepare/"
166153

154+
terser_batch=""
155+
cd "$package_dir"
156+
for jsf in $(find . -path '*.js' -a -not -path '*/www/i18n/*')
157+
do
158+
compress_jsf="$compress_js_dir/$jsf"
159+
terser_batch="$terser_batch $package_dir/$jsf -o $compress_jsf -c -m"
160+
mkdir -p "$(dirname "$compress_jsf")"
161+
done
167162
cd "$top_dir"
163+
164+
echo "$terser_batch" | xargs -n 5 -P $num_terser_threads $terser_arg1 $terser_arg2
165+
cp -r "$compress_js_dir"/* "$package_dir"
168166
echo "Done!"
169167
}
170168

171169
do_css_compress()
172170
{
173-
echo "Compressing CSS files..."
171+
num_uglifycss_threads=1
172+
if [ "$num_build_threads" != "unspecified" ]; then
173+
num_uglifycss_threads=$num_build_threads
174+
fi
175+
echo "Compressing CSS files ($num_uglifycss_threads threads)..."
174176
uglifycss_arg1="$1"
175177
uglifycss_arg2="$2"
176-
178+
package_dir="$top_dir/package-prepare"
177179
rm -rf "$compress_css_dir"
178180
mkdir "$compress_css_dir"
179-
escaped_package_dir=$(echo "$top_dir/package-prepare/" | sed 's/\//\\\//g' | sed 's/\-/\\-/g' ) ;
180-
for cssdir in $(find "${top_dir}/package-prepare" -maxdepth 5 -path "*/www/themes/*") ; do
181-
pkg_rel_path=$(echo $cssdir | sed "s/$escaped_package_dir//g");
182-
mkdir -p "$compress_css_dir/$pkg_rel_path"
183-
cp "$cssdir/"*.css "$compress_css_dir/$pkg_rel_path/"
184-
cd "$compress_css_dir/$pkg_rel_path/"
185-
186-
for cssf in *.css ; do
187-
if [ -n "$uglifycss_arg2" ] ; then
188-
"$uglifycss_arg1" "$uglifycss_arg2" "$cssf" > "$cssf.cmp"
189-
else
190-
"$uglifycss_arg1" "$cssf" > "$cssf.cmp"
191-
fi
192-
mv "$cssf.cmp" "$cssf"
193-
done
194-
done
195-
cp -r "$compress_css_dir"/* "$top_dir/package-prepare/"
196181

182+
uglifycss_batch=""
183+
cd "$package_dir"
184+
for cssf in $(find . -path "*.css")
185+
do
186+
compress_cssf="$compress_css_dir/$cssf"
187+
uglifycss_batch="$uglifycss_batch --output $compress_cssf $package_dir/$cssf"
188+
mkdir -p "$(dirname "$compress_cssf")"
189+
done
197190
cd "$top_dir"
191+
192+
echo "$uglifycss_batch" | xargs -n 3 -P $num_uglifycss_threads $uglifycss_arg1 $uglifycss_arg2
193+
cp -r "$compress_css_dir"/* "$package_dir"
198194
echo "Done!"
199195
}
200196

@@ -400,31 +396,31 @@ if [ "$js_compress" = "true" ] || [ "$js_compress" = "TRUE" ] || [ "$js_compress
400396

401397
else
402398

403-
uglifyjs_bin="$top_dir/minifiers/node_modules/.bin/uglifyjs"
404-
if [ ! -e "$uglifyjs_bin" ] ; then
399+
terser_bin="$top_dir/minifiers/node_modules/.bin/terser"
400+
if [ ! -e "$terser_bin" ] ; then
405401
echo ""
406402
echo "**************************************************************************"
407-
echo "** UglifyJS2 is not installed, attempting to install from npm **"
403+
echo "** Terser is not installed, attempting to install from npm **"
408404
echo "**************************************************************************"
409405
echo ""
410406

411407
mkdir -p "$top_dir/minifiers/node_modules/.bin"
412408

413409
cd "$top_dir"
414-
npm install uglify-js --prefix minifiers > /dev/null 2>&1
410+
npm install terser --prefix minifiers > /dev/null 2>&1
415411
else
416-
echo "uglifyjs ok!"
412+
echo "terser ok!"
417413
fi
418414
cd "$top_dir/minifiers/node_modules/.bin"
419-
uglify_test=$( echo 'var abc = 1;' | ${nodeglobal:+$node_binary} "$uglifyjs_bin" 2>/dev/null )
415+
uglify_test=$( echo 'var abc = 1;' | ${nodeglobal:+$node_binary} "$terser_bin" 2>/dev/null )
420416
if [ "$uglify_test" = 'var abc=1' ] || [ "$uglify_test" = 'var abc=1;' ] ; then
421417
js_compress="true"
422-
do_js_compress ${nodeglobal:+"$node_binary"} "$uglifyjs_bin"
418+
do_js_compress ${nodeglobal:+"$node_binary"} "$terser_bin"
423419
else
424420
js_compress="false"
425421
echo ""
426422
echo "**************************************************************************"
427-
echo "** WARNING: Cannot compress javascript, uglifyjs could not be installed **"
423+
echo "** WARNING: Cannot compress JavaScript, terser could not be installed **"
428424
echo "**************************************************************************"
429425
echo ""
430426
fi

rebuild.sh

+45-48
Original file line numberDiff line numberDiff line change
@@ -127,62 +127,59 @@ EOF
127127

128128
}
129129

130-
131130
do_js_compress()
132131
{
133-
uglifyjs_arg1="$1"
134-
uglifyjs_arg2="$2"
135-
132+
num_terser_threads=1
133+
if [ "$num_build_threads" != "unspecified" ]; then
134+
num_terser_threads=$num_build_threads
135+
fi
136+
echo "Compressing/Mangling JavaScript files ($num_terser_threads threads)..."
137+
terser_arg1="$1"
138+
terser_arg2="$2"
139+
package_dir="$top_dir/package-prepare"
136140
rm -rf "$compress_js_dir"
137141
mkdir "$compress_js_dir"
138-
escaped_package_dir=$(echo "$top_dir/package-prepare/" | sed 's/\//\\\//g' | sed 's/\-/\\-/g' ) ;
139-
for jsdir in $(find "${top_dir}/package-prepare" -path "*/www/js") ; do
140-
pkg_rel_path=$(echo $jsdir | sed "s/$escaped_package_dir//g");
141-
mkdir -p "$compress_js_dir/$pkg_rel_path"
142-
cp "$jsdir/"*.js "$compress_js_dir/$pkg_rel_path/"
143-
cd "$compress_js_dir/$pkg_rel_path/"
144-
145-
for jsf in *.js ; do
146-
if [ -n "$uglifyjs_arg2" ] ; then
147-
"$uglifyjs_arg1" "$uglifyjs_arg2" "$jsf" > "$jsf.cmp"
148-
else
149-
"$uglifyjs_arg1" "$jsf" > "$jsf.cmp"
150-
fi
151-
mv "$jsf.cmp" "$jsf"
152-
done
153-
done
154-
cp -r "$compress_js_dir"/* "$top_dir/package-prepare/"
155142

143+
terser_batch=""
144+
cd "$package_dir"
145+
for jsf in $(find . -path '*.js' -a -not -path '*/www/i18n/*')
146+
do
147+
compress_jsf="$compress_js_dir/$jsf"
148+
terser_batch="$terser_batch $package_dir/$jsf -o $compress_jsf -c -m"
149+
mkdir -p "$(dirname "$compress_jsf")"
150+
done
156151
cd "$top_dir"
152+
153+
echo "$terser_batch" | xargs -n 5 -P $num_terser_threads $terser_arg1 $terser_arg2
154+
cp -r "$compress_js_dir"/* "$package_dir"
155+
echo "Done!"
157156
}
158157

159158
do_css_compress()
160159
{
161-
echo "Compressing CSS files..."
160+
num_uglifycss_threads=1
161+
if [ "$num_build_threads" != "unspecified" ]; then
162+
num_uglifycss_threads=$num_build_threads
163+
fi
164+
echo "Compressing CSS files ($num_uglifycss_threads threads)..."
162165
uglifycss_arg1="$1"
163166
uglifycss_arg2="$2"
164-
167+
package_dir="$top_dir/package-prepare"
165168
rm -rf "$compress_css_dir"
166169
mkdir "$compress_css_dir"
167-
escaped_package_dir=$(echo "$top_dir/package-prepare/" | sed 's/\//\\\//g' | sed 's/\-/\\-/g' ) ;
168-
for cssdir in $(find "${top_dir}/package-prepare" -maxdepth 5 -path "*/www/themes/*") ; do
169-
pkg_rel_path=$(echo $cssdir | sed "s/$escaped_package_dir//g");
170-
mkdir -p "$compress_css_dir/$pkg_rel_path"
171-
cp "$cssdir/"*.css "$compress_css_dir/$pkg_rel_path/"
172-
cd "$compress_css_dir/$pkg_rel_path/"
173-
174-
for cssf in *.css ; do
175-
if [ -n "$uglifycss_arg2" ] ; then
176-
"$uglifycss_arg1" "$uglifycss_arg2" "$cssf" > "$cssf.cmp"
177-
else
178-
"$uglifycss_arg1" "$cssf" > "$cssf.cmp"
179-
fi
180-
mv "$cssf.cmp" "$cssf"
181-
done
182-
done
183-
cp -r "$compress_css_dir"/* "$top_dir/package-prepare/"
184170

171+
uglifycss_batch=""
172+
cd "$package_dir"
173+
for cssf in $(find . -path "*.css")
174+
do
175+
compress_cssf="$compress_css_dir/$cssf"
176+
uglifycss_batch="$uglifycss_batch --output $compress_cssf $package_dir/$cssf"
177+
mkdir -p "$(dirname "$compress_cssf")"
178+
done
185179
cd "$top_dir"
180+
181+
echo "$uglifycss_batch" | xargs -n 3 -P $num_uglifycss_threads $uglifycss_arg1 $uglifycss_arg2
182+
cp -r "$compress_css_dir"/* "$package_dir"
186183
echo "Done!"
187184
}
188185

@@ -390,31 +387,31 @@ if [ "$js_compress" = "true" ] || [ "$js_compress" = "TRUE" ] || [ "$js_compress
390387

391388
else
392389

393-
uglifyjs_bin="$top_dir/minifiers/node_modules/.bin/uglifyjs"
394-
if [ ! -e "$uglifyjs_bin" ] ; then
390+
terser_bin="$top_dir/minifiers/node_modules/.bin/terser"
391+
if [ ! -e "$terser_bin" ] ; then
395392
echo ""
396393
echo "**************************************************************************"
397-
echo "** UglifyJS2 is not installed, attempting to install from npm **"
394+
echo "** Terser is not installed, attempting to install from npm **"
398395
echo "**************************************************************************"
399396
echo ""
400397

401398
mkdir -p "$top_dir/minifiers/node_modules/.bin"
402399

403400
cd "$top_dir"
404-
npm install uglify-js --prefix minifiers > /dev/null 2>&1
401+
npm install terser --prefix minifiers > /dev/null 2>&1
405402
else
406-
echo "uglifyjs ok!"
403+
echo "terser ok!"
407404
fi
408405
cd "$top_dir/minifiers/node_modules/.bin"
409-
uglify_test=$( echo 'var abc = 1;' | ${nodeglobal:+$node_binary} "$uglifyjs_bin" 2>/dev/null )
406+
uglify_test=$( echo 'var abc = 1;' | ${nodeglobal:+$node_binary} "$terser_bin" 2>/dev/null )
410407
if [ "$uglify_test" = 'var abc=1' ] || [ "$uglify_test" = 'var abc=1;' ] ; then
411408
js_compress="true"
412-
do_js_compress ${nodeglobal:+"$node_binary"} "$uglifyjs_bin"
409+
do_js_compress ${nodeglobal:+"$node_binary"} "$terser_bin"
413410
else
414411
js_compress="false"
415412
echo ""
416413
echo "**************************************************************************"
417-
echo "** WARNING: Cannot compress javascript, uglifyjs could not be installed **"
414+
echo "** WARNING: Cannot compress JavaScript, terser could not be installed **"
418415
echo "**************************************************************************"
419416
echo ""
420417
fi

0 commit comments

Comments
 (0)