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
Add --!combine to minify every file into its own output
file instead of combining them into one, e.g. box mcss
"path/to/css/files/*" --!combine
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_OPTIMIZATIONScombine optional, defaults to true. Set to false to
minify every file into its own output file (named after the source
file plus hash) instead of combining them into one.
minified will then contain a comma separated list of
the generated file names 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.5.1
##foo) are still unsupported by Closure Compiler itself0.5.0
combine option ("combine":
false in this.minify, --!combine
for minifyjs/minifycss) to minify every
file into its own output file instead of combining them into one
(issue #1)optimization setting from
this.minify is now actually passed to the Closure Compilerminify run processes several css bundles0.4.2
calc() expressions
containing CSS custom properties, e.g. calc(var(--bs-gutter-x)
* .5) shipped as invalid var(- - bs-gutter - x)
rgb() to hex shortening on
the Lucee 6 CommandBox runtime0.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