diff --git a/config.xml b/config.xml
index e456f14..1d2dc41 100644
--- a/config.xml
+++ b/config.xml
@@ -32,7 +32,5 @@
-
-
-
+
diff --git a/scripts/npm_prepare.sh b/scripts/npm_prepare.sh
new file mode 100755
index 0000000..f5e85a1
--- /dev/null
+++ b/scripts/npm_prepare.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+./scripts/www_npm_install.sh
+./scripts/generate_credits.sh
+./scripts/remove_bloat.sh
\ No newline at end of file
diff --git a/scripts/remove_bloat.sh b/scripts/remove_bloat.sh
index c7eab74..622278a 100755
--- a/scripts/remove_bloat.sh
+++ b/scripts/remove_bloat.sh
@@ -7,75 +7,80 @@ echo "Removing bloat in node_modules..."
pwd
cd www/node_modules
-rm -rf {ansicolors,buffer-from,concat-stream,core-util-is,csscolorparser}
-rm -rf {dom7,earcut,geojson-vt,gl-matrix,grid-index,ieee754,inherits,isarray}
-rm -rf {kdbush,minimist,murmurhash-js,path-to-regexp,potpack,process-nextick-args}
+rm -rf {ansicolors,buffer-from,cardinal,concat-stream,core-util-is,csscolorparser}
+rm -rf {dom7,earcut,esprima,geojson-vt,gl-matrix,grid-index,ieee754,inherits,isarray}
+rm -rf {kdbush,leaflet-geometryutil,@mapbox,minimist,murmurhash-js}
+rm -rf {path-to-regexp,pbf,potpack,process-nextick-args}
rm -rf {protocol-buffers-schema,quickselect,readable-stream,redeyed,resolve-protobuf-schema}
rm -rf {rw,safe-buffer,sharkdown,split,ssr-window,string_decoder,supercluster}
rm -rf {template7,text-encoding,through,tinyqueue,ts-custom-error,typedarray}
rm -rf {util-deprecate,vt-pbf,wgs84}
+# Make npm stop complaining that these don't exist by actually removing them
+rm -rf .bin/*
+
cd @fortawesome/fontawesome-free
-rm -rf js
-rm -rf less
-rm -rf scss
-rm -rf sprites
-rm -rf svgs
+rm -rf {js,less,metadata,scss,sprites,svgs}
+find css -type f -not -name 'all.min.css' -delete
cd ../..
+cd framework7
+rm -rf components
+rm -rf lazy-components
+rm -rf less
+rm -rf modules
+rm -rf utils
+rm -f framework7.*
+rm -f framework7-lite.*
+find css -type f -not -name 'framework7.bundle.min.css' -delete
+find js -type f -not -name 'framework7.bundle.min.js' -delete
+cd ..
+
cd jquery
rm -rf src
rm -rf external
+find dist -type f -not -name 'jquery.min.js' -delete
cd ..
cd jsbarcode
rm -rf .dockerignore .eslintignore .eslintrcautomation bower.json CONTRIBUTING.md docker-compose.yml Dockerfile example gulpfile.js jsbarcode.d.ts README.md src test .travis.yml
+rm -rf {automation,bin}
rm -rf dist/barcodes
rm -rf dist/JsBarcode.all.js
cd ..
-cd framework7
-rm -rf components
-rm -rf lazy-components
-rm -rf less
-rm -rf modules
-rm -rf utils
+cd leaflet
+rm -rf {CHANGELOG.md,src}
+find dist -type f -not -name 'leaflet.css' -not -name 'leaflet.js' -delete
+cd ..
+
+cd leaflet.locatecontrol
+rm -rf {CHANGELOG.md,README.md,src}
+find dist -type f -not -name 'L.Control.Locate.min.css' -not -name 'L.Control.Locate.min.js' -delete
+cd ..
+
+cd leaflet.markercluster
+rm -rf {build,example,spec,src,CHANGELOG.md}
+find dist -type f -not -name 'leaflet.markercluster.js' -not -name 'MarkerCluster.css' -not -name 'MarkerCluster.Default.css' -delete
cd ..
cd material-design-icons
-rm -rf action
-rm -rf alert
-rm -rf av
-rm -rf bower.json
-rm -rf communication
-rm -rf content
-rm -rf device
-rm -rf editor
-rm -rf file
-rm -rf gulpfile.babel.js
-rm -rf hardware
-rm -rf image
-rm -rf index.js
-rm -rf maps
-rm -rf navigation
-rm -rf notification
-rm -rf package.json
-rm -rf places
-rm -rf README.md
-rm -rf social
-rm -rf sprites
-rm -rf toggle
+# Remove everything except the icon font and license, but also exclude the
+# current and parent folder (. , ..) so rm won't complain about refusing
+# to delete the whole filesystem
+find . -maxdepth 1 -not -name '.' -not -name 'LICENSE' -not -name 'iconfont' -exec rm -rf {} \;
cd ..
cd mapbox-gl
rm -rf {build,flow-typed,src}
-cd dist
-rm -rf ./*.map
-rm -rf ./*.flow
-rm -rf {mapbox-gl-csp.js,mapbox-gl-csp-worker.js,mapbox-gl-dev.js,mapbox-gl-unminified.js}
-cd ..
+find dist -type f -not -name 'mapbox-gl.css' -not -name 'mapbox-gl.js' -delete
+rm -rf dist/style-spec
cd ..
+cd @zxing/library
+rm -rf {esm,esm5}
+rm -f umd/index.min.js.map
+cd ../..
echo "Cleanup finished"