Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Os plugins são configurados nos pom.xml de cada projeto. Primeiramente devemos fazer com que o YUI-Compressor pare de minificar os arquivos JS para isso na configuração já existente precisamos adicionar a seguinte tag dentro da configuração.


No exemplo estaremos utilizando a widget: sample-component-widget

Bloco de código
languagexml
themeConfluence
titleIgnorando arquivos JS - YUI Compressor
<configuration>                        
  …
  <excludes>
    <exclude>**/*.js</exclude>
  </excludes>
  …
</configuration>

...

Feito isso podemos configurar o Closure Compiler. 

Importante
Bloco de código
languagexml
themeConfluence
titleExemplo de configuração usada no pom: wcmsample-component-widget
linenumberstrue
                    <plugin>
                        <groupId>com.github.blutorange</groupId>
                        <artifactId>closure-compiler-maven-plugin</artifactId>
             <version>2.21.0</version>
           <executions>
                            <execution>
                                <id>default-minify</id>
                                <goals>
                                    <goal>minify</goal>
                                </goals>
                                <phase>generate-resources</phase>
                            </execution>
                        </executions>
                        <configuration>
                            <skip>true</skip>
                    <skip>false</skip>
        <baseSourceDir>${project.basedir}/src</baseSourceDir>
                            <encoding>UTF-8</encoding>
                            <sourceDir>main/webapp/resources</sourceDir>
                            <targetDir>resources</targetDir>
                            <includes>**/*.js</includes>
                            <outputFilename>#{path}/#{basename}.#{extension}</outputFilename>
                            <excludes>**/${project.basedir}</excludes>
                            <excludes>**/*.min.js</excludes>
                            <excludes>**/*-min.js</excludes>
                            <closureCompilationLevel>SIMPLE_OPTIMIZATIONS</closureCompilationLevel>
                            <closureWarningLevels>
                                <undefinedVars>OFF</undefinedVars>
                                <duplicate>OFF</duplicate>
                                <duplicateMessage>OFF</duplicateMessage>
                                <es5Strict>OFF</es5Strict>
                                <checkVars>OFF</checkVars>
                            </closureWarningLevels>
                            <closureEmitUseStrict>false</closureEmitUseStrict>
                            <closureRewritePolyfills>false</closureRewritePolyfills>
                            <closureLanguageOut>NO_TRANSPILE</closureLanguageOut>
                            <skipMinify>false</skipMinify>
                            <skipMerge>true</skipMerge>
                        </configuration>
                    </plugin>
Aviso
title

O plugin é declarado dentro do profile "onlyminify" do pom.xml. No build de desenvolvimento o skipMinify é true. Para evitar que em nosso dia a dia o tempo de compilação seja maior do que o necessário.


A documentação do mesmo pode ser acessada aqui: https://blutorange.github.io/closure-compiler-maven-plugin/minify-mojo.html

...

Nota
titleAtenção

Atualmente, caso o plugin não encontre um js dentro do source dir definido ele quebra. Por isso, em projetos onde o pom pai não possui arquivos a serem minificados passamos o skip como true. Porém é necessário que em seus filhos haja a configuração:

Bloco de código
languagexml
themeConfluence
			<plugin>
                <groupId>com.github.blutorange</groupId>
                <artifactId>closure-compiler-maven-plugin</artifactId>
                <configuration>
                    <skip>false</skip>
                </configuration>
        	</plugin>

Template String

Por conta do mecanismo de internacionalização utilizado no fluig, a funcionalidade de template de string, onde a sintaxe é ${...} deverá ser codificada com um parâmetro a mais, conforme exemplo abaixo:

Bloco de código
languagejs
themeConfluence
titleUtilizando tempate string
var msg = ‘Olá Fluig‘ 
var frase = "${r"{msg}"}, bem-vindo a Silver Mist"