Ignacio
Ignacio

Reputation: 8035

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.

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?

Upvotes: 6

Views: 4367

Answers (3)

Asenar
Asenar

Reputation: 7020

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

Upvotes: 0

the.malkolm
the.malkolm

Reputation: 2421

http://git-scm.com/book/ch7-2.html

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?

Upvotes: 2

Peter van der Does
Peter van der Does

Reputation: 14498

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.

Upvotes: 0

Related Questions