Compress JS/CSS files on deploy using Git

I’m kinda new to git. Also, this is my first project where I’m automating the deployment process. So far it’s been bliss to being able to do git push dev and have files uploaded, config files copied, etc.

Now I want to minify JS/CSS files when I push to my dev server. I was thinking of installing some command-line tool on the server for minifying and for-each js/css file on certain folder, compress and save, on a post-receive git hook.

  • svn deployment strategies for multiple groups of developers (not co-located) working on different components of the same project
  • Deploy changed files using Git
  • How do you avoid storing passwords in version control?
  • When open-sourcing a live Rails app, is it dangerous to leave the session key secret in source control?
  • GIT - copy newest branch to another directory
  • GIT: Have current commit hash and latest tag in file on commit
  • Is this a good approach? (cause I’ve read about adding compressed files to the repo and other ideas I don’t feel quite convinced)

    If so, which tools are best for the task?

  • What is the .git/sequencer directory?
  • .gitignore exception is including extra files
  • Update working on target repo when changes are pushed to it
  • Using credentials from jenkins store in a jenkinsfile
  • How to I include multiple remote git repo's into a single repo?
  • Why are some git commits hidden inside the cygwin shell?
  • 3 Solutions collect form web for “Compress JS/CSS files on deploy using Git”

    I assume that you will never make a commit on server i.e. server will be used to only checkout updated master and never update it. This trick will automatically minify any *.css files on checkout:

    # within repo
    $ echo '*.css filter=minify' >> .git/info/attributes
    $ git config filter.minify.clean  cat
    $ git config filter.minify.smudge minify-command

    Where the minify-command should be the command that minifies *.css files i.e.

    $ cat foo.css | minify-command > foo-minified.css

    Is it close to what you want?

    By rewriting files on dev and not having the minified files in your local repo, the two repositories will always be out of sync with each other.

    You might want to rethink the way you deploy your site to dev, instead of pushing to dev, you might want to pull on dev from a prestine repository for example.

    Maybe you’re looking for adding a post-checkout hook (or maybe it’s another hook, according to your deploy system), and then launch with that the script which will minify your files.

    You can also use the hook to check the modified date of the concerned files before doing that

    Git Baby is a git and github fan, let's start git clone.