# jscc 
## javascript compiler collections. #
jscc is a javascript compiler interfaces for the front end developpers.

### install.

    npm -g install jscc

### run.
    
    jscc [build/watch]

### usage.
In the first, create build.json
   
    {
      "global" : {
        "debug" : {
          "compiler" : "uglify",
           "uglify" : {
             "mangle" : false,
             "squeeze-more" : false,
             "unsafe" : false,
             "squeeze" : false,
             "beautify" : true
           },
           "closure" : {
              "compilationLevel" : "WHITESPACE_ONLY",
              "sourceMap" : true,
              "debug" : true,
              "prettyPrint" : true,
              "externs" : ["jquery-1.7.externs.js"],
              "jscompWarnings" : ["checkTypes"],
              "jscompOff" : ["missingProperties"],
              "outputWrapper" : "!function () {%output%}();"
           }
        },
        "release" : {
          "compiler" : "closure",
          "uglify" : {
            "mangle" : true,
            "squeeze-more" : true,
            "unsafe" : true,
            "squeeze" : true,
            "beautify" : false
          },
          "closure" : {
            "compilationLevel" : "ADVANCED_OPTIMIZATIONS",
            "sourceMap" : true,
            "debug" : false,
            "prettyPrint" : false,
            "externs" : ["jquery-1.7.externs.js"],
            "jscompWarnings" : ["checkTypes", "accessControls", "visibility"],
            "jscompOff" : ["missingProperties"],
            "outputWrapper" : "!function () {%output%}();",
            "processJqueryPrimitives" : true,
            "useTypesForOptimization" : true
          }
        }
      },
      "./test/js/test1.js" : {
        "release" : {
          "closure" : {
            "debug" : true,
            "prettyPrint" : true
          }
        }
      },
      "./test/js/test2.js" : {},
      "./js/closure_compiler_utils.js" : {}
    }

### detail.

* **global** : A global options which applied to all files, if you are not overwrite each file options.

* **debug** : A debug mode option, this option used by debug build.

* **release** : A release mode option, this option used by release build.

* **filename** : Specify a relative or a absolute path for the compilation target.

### options

* **[watch|build] -m/--mode [MODE]** : Specify the compilation mode. MODE is one of "release debug"
* **[build] -t/--target [TARGET]** : Specify the build target. TARGET is selected by RegularExpressions from the build.json.
