created 2009 · complexity basic · author Othree · version 7.0
If you use yuicompressor to minimize your css and js files it is necessary to compress each file whenever you save it. The following function does this automatically; just copy the code into your vimrc:
function Js_css_compress ()
let cwd = expand('<afile>:p:h')
let nam = expand('<afile>:t:r')
let ext = expand('<afile>:e')
if -1 == match(nam, "[\._]src$")
let minfname = nam.".min.".ext
else
let minfname = substitute(nam, "[\._]src$", "", "g").".".ext
endif
if ext == 'less'
if executable('lessc')
cal system( 'lessc '.cwd.'/'.nam.'.'.ext.' &')
endif
else
if filewritable(cwd.'/'.minfname)
if ext == 'js' && executable('closure-compiler')
cal system( 'closure-compiler --js '.cwd.'/'.nam.'.'.ext.' > '.cwd.'/'.minfname.' &')
elseif executable('yuicompressor')
cal system( 'yuicompressor '.cwd.'/'.nam.'.'.ext.' > '.cwd.'/'.minfname.' &')
endif
endif
endif
endfunction
autocmd FileWritePost,BufWritePost *.js :call Js_css_compress()
autocmd FileWritePost,BufWritePost *.css :call Js_css_compress()
autocmd FileWritePost,BufWritePost *.less :call Js_css_compress()
Update:
- Now support Google Closure Compiler and less
- Code also available on gist
Notes:
- You most install yuicompressor and make yuicompressor executable from any directory.
- The code executes yuicompressor automatically, but only when the compressed file exists, so you need to execute yuicompressor manually the first time.
Comments[]
Thanks for the tip, but we need a little more info to avoid having each reader spend time working out what actually happens. I install yuicompressor and put the above code in vimrc. I edit example.js
. I make some changes and save the file. What happens then? JohnBeckett 10:25, September 11, 2009 (UTC)
Thanks for reformatting. At first, You must use yuicompressor to compress example.js
youself. In most case, the compressed file will name as example.min.js
. So you might execute the following command:
yuicompressor example.js > example.min.js
After example.min.js is created. Everytime you edit and save example.js. Vim will auto execute the command on the above to compress the js file. This function can handle both js and css. And three kind of file name pairs:
- blah.js > blah.min.js
- blah.src.js > blah.js
- blah_src.js > blah.js
Othree 03:52, September 12, 2009 (UTC)