mirror of
https://gitlab.com/CodeSolutionsProject/MiniThunder.git
synced 2026-02-13 16:41:33 +01:00
Added bash version, updated readme, and deleted doc folder because it has nothing useful yet
This commit is contained in:
45
README.md
Normal file → Executable file
45
README.md
Normal file → Executable file
@@ -1,7 +1,40 @@
|
||||
MiniThunder
|
||||
=
|
||||
Minimize project to production
|
||||
-
|
||||
### Require
|
||||
# MiniThunder
|
||||
|
||||
## Minimize project to production, saving space (Not reversible)
|
||||
|
||||
### Python version
|
||||
It supports html/css/js files
|
||||
#### Requires
|
||||
* [jsmin](https://github.com/tikitu/jsmin/) - MIT
|
||||
* [rcssmin](http://opensource.perlig.de/rcssmin) - APACHE 2.0
|
||||
* [rcssmin](http://opensource.perlig.de/rcssmin) - APACHE 2.0
|
||||
|
||||
#### Use
|
||||
```
|
||||
python minithunder.py Folder/proyect Folder/minified
|
||||
```
|
||||
---
|
||||
### Bash version
|
||||
It supports html/xml,js,css,png and jpg files
|
||||
#### Requires
|
||||
* [html-minifier](https://www.npmjs.com/package/html-minifier)
|
||||
* [clean-css-cli](https://www.npmjs.com/package/clean-css)
|
||||
* [uglify-js](https://www.npmjs.com/package/uglify-js)
|
||||
* [optipng](http://optipng.sourceforge.net/) - ZLIB LICENSE (OPEN SOURCE)
|
||||
* [jpegoptim](http://freecode.com/projects/jpegoptim) - GPL
|
||||
|
||||
#### Use
|
||||
```
|
||||
bash minithunder.sh Folder/proyect
|
||||
```
|
||||
|
||||
#### Install dependencies in Debian and derivates (All as root)
|
||||
|
||||
```
|
||||
# apt install optipng jpegoptim uglifyjs cleancss npm
|
||||
# npm install html-minifier -g
|
||||
```
|
||||
|
||||
#### Install dependencies in Archlinux (All as root)
|
||||
```
|
||||
# pacman -S optipng jpegoptim npm
|
||||
# npm install html-minifier clean-css-cli uglify-js -g
|
||||
@@ -1,3 +0,0 @@
|
||||
# Require
|
||||
* [jsmin](https://github.com/tikitu/jsmin/)
|
||||
* [rcssmin](http://opensource.perlig.de/rcssmin)
|
||||
125
src/minithunder.sh
Executable file
125
src/minithunder.sh
Executable file
@@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
## Mini thunder (Bash edition)
|
||||
version="0.9"
|
||||
## It minifies a folder of files preparing it for production using less space
|
||||
## It supports html/xml,css,js,jpg and png files.
|
||||
|
||||
# First, see if user has all the deps installed (Only check one time, $2 knows that)
|
||||
if [[ -z $2 ]];then
|
||||
which html-minifier > /dev/null 2> /dev/null
|
||||
if [[ $? -ne 0 ]];then
|
||||
echo "Error. html-minifier not installed."
|
||||
echo "You can install it using npm if you have it 'sudo npm install html-minifier -g' or using your distro package manager"
|
||||
notdeps=1
|
||||
fi
|
||||
which cleancss > /dev/null 2> /dev/null
|
||||
if [[ $? -ne 0 ]];then
|
||||
echo "Error. cleancss not installed."
|
||||
echo "You can install it using npm if you have it 'sudo npm install clean-css-cli -g' or using your distro package manager using clean-css"
|
||||
notdeps=1
|
||||
fi
|
||||
which uglifyjs > /dev/null 2> /dev/null
|
||||
if [[ $? -ne 0 ]];then
|
||||
echo "Error. uglifyjs not installed."
|
||||
echo "You can install it using npm if you have it 'sudo npm install uglify-js -g' or using your distro package manager"
|
||||
notdeps=1
|
||||
fi
|
||||
which optipng > /dev/null 2> /dev/null
|
||||
if [[ $? -ne 0 ]];then
|
||||
echo "Error. optipng not installed."
|
||||
echo "You can install it using your distro package manager"
|
||||
notdeps=1
|
||||
fi
|
||||
which jpegoptim > /dev/null 2> /dev/null
|
||||
if [[ $? -ne 0 ]];then
|
||||
echo "Error. jpegoptim not installed."
|
||||
echo "You can install it using your distro package manager"
|
||||
notdeps=1
|
||||
fi
|
||||
# If not all deps are satisfied
|
||||
if [[ ! -z $notdeps ]];then
|
||||
echo "Some dependencies are not installed, if you continue, you will have errors for files that use this programs"
|
||||
echo "You can use the final folder anyways, but it may not be fully minified"
|
||||
echo "Press any key to continue, CTRL+C to exit"
|
||||
read
|
||||
fi
|
||||
fi
|
||||
|
||||
# Start
|
||||
|
||||
# See it folder especified
|
||||
|
||||
if [[ -z "$1" || "$1" = "-h" ]];then
|
||||
echo "Minithunder Bash Edition version $version"
|
||||
echo "Usage: minithunder pathOfProject"
|
||||
echo "It creates a new 'minified' folder with all files minified inside"
|
||||
echo "------------------------------------------------------"
|
||||
echo "-h: show this help"
|
||||
echo "-v: show version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$1" = "-v" ]];then
|
||||
echo "Version: $version"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ ! -d "$1" ]];then
|
||||
echo "The path specified is not a valid directory, make sure it's there"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Copy all folder to minimize it, only where are in root ($2 is null), if I'm in a subfolder, make var $folder with path.
|
||||
if [[ -z "$2" ]];then
|
||||
cd "$1"
|
||||
origfolder="$(pwd)" # For counting at finish, and knowing absolute root path
|
||||
mkdir ../minified
|
||||
cp -r "$origfolder" "${origfolder}/../minified"
|
||||
cd "${origfolder}/../minified"
|
||||
folder="$(pwd)" # Production folder now
|
||||
else
|
||||
folder="$1"
|
||||
fi
|
||||
|
||||
cd "$folder" # Go to folder
|
||||
|
||||
# Run at all files searching files to minify
|
||||
for j in *
|
||||
do
|
||||
if [ -d "$j" ] ; then # Folder encountered
|
||||
"$0" "$folder/$j" 1 # Run script ($0) in a subfolder (The '1' is for making program know it's not root folder)
|
||||
elif [ -f "$j" ]; then # File encountered
|
||||
case ${j: -4} in # (Extension)
|
||||
".htm"|"html"|"twig"|".xml")
|
||||
html-minifier --minify-css=true --minify-js=true --collapse-whitespace --conservative-collapse --remove-comments "$j" -o "$j"
|
||||
echo "File $j minified"
|
||||
;;
|
||||
".css")
|
||||
cleancss "$j" -o "$j"
|
||||
echo "File $j minified"
|
||||
;;
|
||||
*".js")
|
||||
uglifyjs "$j" -o "$j"
|
||||
echo "File $j minified"
|
||||
;;
|
||||
".png")
|
||||
optipng -quiet -o7 "$j"
|
||||
echo "File $j minified"
|
||||
;;
|
||||
".jpg"|"jpeg")
|
||||
jpegoptim -q --strip-all -o "$j"
|
||||
echo "File $j minified"
|
||||
;;
|
||||
*)
|
||||
echo "File $j not minified, format not supported";;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
|
||||
# Summary (Only original program)
|
||||
if [[ -z "$2" ]];then
|
||||
echo "Files minified in $folder"
|
||||
echo "Savings"
|
||||
echo "Before: $(du -hs --apparent-size "$origfolder" | cut -f1) ($(du -bs "$origfolder" | cut -f1) bytes)"
|
||||
echo "After: $(du -hs --apparent-size "$folder" | cut -f1) ($(du -bs "$folder" | cut -f1) bytes)"
|
||||
fi
|
||||
Reference in New Issue
Block a user