NLSClientScript can optionally merge the linked javascript files, and optionally minify the result.
Check the /assets/nls directory of your locally installed demo, to see the result of the merging process!
//part of /protected/config/main.php: 'components'=>array( ... 'clientScript' => array( ... //------ General NLSClientSript settings ------ //Path to the extension (autoloaded) 'class' => 'nlac\NLSClientScript', //It only does merging if more than [mergeAbove] files are linked 'mergeAbove' => 1, //If set, it will be appended to the merged files 'appVersion' => '1.0', //Filtering - null or js regex here 'includePattern' => '/process_only_this_pattern/', 'excludePattern' => '/no_process_this_pattern/i', //CURL options, see http://php.net/manual/en/function.curl-setopt.php 'curlTimeOut' => 15, 'curlConnectionTimeOut' => 15, //------ JS-merge specific settings ------ //Do merge js files! 'mergeJs' => true, //If true, the merged files will be re-composed on every request - set to true ONLY for debugging/development 'forceMergeJs' => false, //If true, it applies minification on the result 'compressMergedJs' => false, //If true, it attempts to merge scripts pulled by ajax-requested partials 'mergeIfXhr' => false, //Filtering for merge - null or php regex here 'mergeJsIncludePattern' => '/only_merge_this_pattern/i', 'mergeJsExcludePattern' => '/no_merge_this_pattern/i', ... ), ... )