flynetworks/google-closure

This package provides the google closure javascript library. Also a compile and deps command is available through the command line.

Installs: 137

Dependents: 0

Suggesters: 0

Stars: 2

Watchers: 1

Forks: 0

Open Issues: 0

Language:JavaScript

Type:typo3-flow-package

2.1.2 2014-07-28 19:55 UTC

README

Installation

I recommend to install this package using composer.
Just require the flynetworks/google-closure package in your composer.json

"require": {
    "flynetworks/google-closure": "2.*"
}

Basic Configuration

After you have the package installed there is a new configuration file "GoogleClosure.yaml" available to you.
This file has basically the following structure:

UniqueIdentifier:
  compiler:
    options:

Example

MyUniqueKey:
  compiler:
    options:
      id: 'my-project-id'
      externs:
        - 'resource://My.Package/Public/JavaScripts/Externs/SomeExterns.js'
      paths:
        - 'resource://My.Package/Public/JavaScripts/'
      moduleOutputPath: 'resource://My.Package/Public/JavaScripts/%s.min.js'
      moduleProductionUri: 'resource://My.Package/Public/JavaScripts/%s.min.js'
      modules:
        'Application':
          deps: []
          inputs:
            - 'resource://My.Package/Public/JavaScripts/Application.js'

Don't use a dot "." for the UniqueIdentifier! I recommend to use only alphanumeric characters.
Within the "options" property you can start to configure the compiler parameters.

Available compiler options:

This package is using the plovr build tool. A documentation about
the options you can use is located here: http://plovr.com/options.html
In the list below all options are listed with their corresponding type.

Option Type
id required string
inputs array[string]
paths array[string]
externs array[string]
customExternsOnly boolean
closureLibrary string
experimentalExcludeClosureLibrary boolean
mode RAW, WHITESPACE, SIMPLE, ADVANCED
level QUIET, DEFAULT, VERBOSE
inherits string
debug boolean
prettyPrint boolean
printInputDelimiter boolean
outputFile string
outputWrapper array[string]
outputCharset string
fingerprint boolean
modules object
moduleOutputPath string
moduleProductionUri string
moduleInfoPath string
globalScopeName string
define object
treatWarningsAsErrors boolean
exportTestFunctions boolean
nameSuffixesToStrip array[string]
typePrefixesToStrip array[string]
idGenerators array[string]
ambiguateProperties boolean
disambiguateProperties boolean
experimentalCompilerOptions object
customPasses object
soyFunctionPlugins array[string]
jsdocHtmlOutputPath string
variableMapInputFile string
variableMapOutputFile string
propertyMapInputFile string
propertyMapOutputFile string
testTemplate string
testExcludes array[string]

Advanced Configuration

There are some more configuration properties available to you. Just see the example below.

MyFancyConfiguration:
  embedMode: 'dependency' #Viewhelper renders the dependency version
  dependency:
    command: 'python %FLOW_PATH_PACKAGES%Application/My.Cool.Package/Resources/Public/closure/bin/build/depswriter.py'
    outputFileName: 'MyCustomDepsFileName.js'
  compiler:
    command: 'java -jar %FLOW_PATH_PACKAGES%Application/My.Cool.Package/Resources/Private/Bin/Plovr.jar build'

ChildConfiguration:
  embedMode: 'compiled' #Viewhelper renders the compiled version
  extends: 'MyFancyConfiguration'
  compiler:
   command: 'java -jar %FLOW_PATH_PACKAGES%Application/Super.Child.Package/Resources/Private/Bin/Plovr.jar build'

ViewHelper

Also a ViewHelper "EmbedScriptViewHelper" is available through this package :)

{namespace gc=FlyNetworks\Google\Closure\ViewHelpers}
<!DOCTYPE html>
<html>
    <head>
        <gc:embedScript configurationKey="MyFancyConfiguration" />
        <gc:embedScript configurationKey="ChildConfiguration" />        
    </head>
</html>

Commands

./flow closure:compile
./flow closure:dependency