BoxLang 🚀 A New JVM Dynamic Language Learn More...
It uses Google Closure Compiler for compression and minification of JS files. For CSS a CFML port of YUI compressor is used.
Install the module using Commandbox:
box install commandbox-minify
box minifycss "path/to/css/files/*"
or box mcss "path/to/css/files/*"
for compressing css files from a location
box minifjs "path/to/js/files/*"
or box mjs "path/to/js/files/*"
for compressing js files from a location
Call this (if you want to use it with Coldbox)
box minify
from your project root directory. It will scan for all Theme.cfc
and ModuleConfig.cfc
files and sees if any contains this.minify = { "nameItAsYouLike" : {}, "nameItAsYouLike2" : {} }
Make sure that this.minify
is a valid json. Currently a regex is used to find and parse it.
ADVANCED_OPTIMIZATIONS options - be carefull with this, better don"t choose it possible options are: none, WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS, ADVANCED_OPTIMIZATIONS
put this setting in your Theme.cfc
or ModuleConfig.cfc
. Make sure that the syntax is valid Json.
Here is an example file:
nameItAsYouLike
as written, name your block as you likefiles
array of files to be minified and combinedtype
can be js or cssname
name of the file containing all minified and combined filesminified
after executing minify
the name plus and hash will be written heresourceDirectory
this is your base dir starting from web root. Enter e.g. modules heredestinationDirectory
the minfied file will be placed hereoptimization
will be used for js minification only, see above ADVANCED_OPTIMIZATIONS this.minify = {
"nameItAsYouLike" : { 'files': [
"theme/includes/justified/jquery.justifiedGallery.min.js"
,"theme/includes/kendoui.for.jquery.2018.1.221.commercial/js/kendo.all.min.js"
,"theme/includes/js/jquery.functions.js"
,"theme/includes/js/jquery.fileupload.js"
,"theme/includes/js/jquery.scripts.js"
],
"type": "js"
,"name": "jsall"
,"minified":"willBeFilledAutomatically"
,"sourceDirectory": "this is your base dir starting from web root. Enter e.g. modules here"
,"destinationDirectory": "modules/theme/includes/js"
,"optimization": "none"
}
,
"nameItAsYouLike2" : { 'files': [
"bootstrap41/css/bootstrap.min.css"
,"justified/justifiedGallery.min.css"
,"css/custom.css"
,"css/bootstrap-datepicker.css"
],
"type": "css"
,"name": "cssall"
,"minified":"willBeFilledAutomatically"
,"sourceDirectory": "modules/theme/includes"
,"destinationDirectory": "modules/theme/includes/css"
}
};
You can place a Theme.cfc
anywhere in your project. Add at least this.minify
structure as mentioned above
0.4.1
0.4
box minifycss path/to/css/files/*
or box mcss path/to/css/files/*
for compressing css files from a locationbox minifjs path/to/css/files
or box js path/to/js/files
for compressing js files from a location0.3.1
this.minify
0.3
0.2
0.1
$
box install commandbox-minify