Laravel pre-distribution clean up and package to zip project excluding files that don’t need to be shipped
- You can create a file called deploy on your Linux system or Windows using git bash.
- In Linux, make it executable.
- Check that you have zip package installed in Linux
- Copy the contents to deploy.
- When ready to zip your file run
./deploy
on your terminal. This will create a zip file in your target directory with version number and name of the file. If an older version already exists, it will create an incremental version by 1.
#!/bin/bash #This program automates creating a clean archive for public release of #Laravel framework based application. For security, you will need to append .env-example to your final zip archive. #For Windows with Ubuntu sub-system, create a .bat file called deploy.bat and append ./laravel-deploy.bash. #Then you can click on the .bat to run deployment script. # # The format of the final filename is myfile-mm-dd-YYYY-v1.zip. "v1" increments to v2 and so forth in consequent runs. # #Target filename name="myfile" #Target directory with no trailing slash! target="/home/my-directory" echo $(php artisan view:clear) echo $(php artisan config:clear) echo $(php artisan route:clear) echo $(php artisan clear-compiled) echo $(php artisan cache:clear) echo $(composer dump-autoload) echo "Testing target directory..." path="$target/$name/" if [ -d "$path" ] then echo "Found target directory!" else echo "Creating target directory" mkdir -p "$path" fi echo Reading current versions ls "$path" #read -p "Would you like to include Laravel assets? " -n 1 -r # echo # if [[ $REPLY =~ ^[Yy]$ ]] # then # assets="" # else # #exclude if no add "$assets$ after -x on zip command below # assets="resources/assets/" # fi fileName=$(find "$path" -type f -name "$name-*.zip") IFS='-' array=( $fileName ) currentVer="${array[4]//[^0-9]/}" echo "Echo current versions is: $currentVer" newVer="$(($currentVer+1))" echo "Echo new version is: $newVer" find storage/framework/sessions ! -name '.gitignore' -type f -exec rm {} + rm -rf storage/debugbar rm -df public/storage rm -rf bash.exe.stackdump npm-debug.log storage/logs/laravel.log composer.lock touch storage/logs/laravel.log now=$(date +"%m-%d-%Y") zip -r "$path$name-$now-v$newVer.zip" * -x "*.git*" "*.idea*" "*node_modules/*" "*vendor/*" "zip.bash" "deploy.bat" "npm-debug.log" ".env"
https://gist.github.com/jgmuchiri/fcae290755113108bd588295f7cd96a0