Árvore de páginas

Versões comparadas

Chave

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

Índice
minLevel2
outlinetrue
exclude.*ndice
stylenone


Introdução

Essa documentação tem como objetivo explicar como é feita a configuração do plugin Closure compiler Maven Plugin

Hoje no Fluig plataforma utiliza-se o plugin YUI compressor para minificar arquivos CSS e JS. Porém o mesmo permanece inativo e sem atualização desde 2013 ficando um pouco ultrapassado e nos impossibilitando de utilizar novas tecnologias, como o ES6.

Fim do YUI Compressor?

Não será possível remover completamente o YUI-Compressor de nosso produto pois o Closure Compiler não irá processar arquivos CSS, apenas JS. Sendo necessário a permanência do antigo para minificar a folha de estilo.

Configurando o plugin

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.

...

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. 

...

var msg = ‘Olá Fluig‘ var frase = "${r"{msg}"}, bem-vindo a Silver Mist"
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
Nota
titleAtenção

Hoje a minificação realizada nos arquivos javaScript pelo plugin pode ocasionar um conflito entre o template de string e o mecanismo de internacionalização i18n, podendo gerar inconsistências. Caso você não use internacionalização em seu JS, template string irá funcionar normalmente. Estamos trabalhando a fim de proporcionar uma solução em próximas versões.