Env e Pré-processo de Gole
No Grunt, eu costumava usar um plugin chamadoenv. Isso me permitiria definir um ambiente em compilação específica. Eu tinha 3 builds. Um deles era o DEV, que usaria todos os arquivos separados individualmente. O PROD concatiaria tudo e o LANÇAMENTO concatiaria e aumentaria. Eu estou olhando para fazer o mesmo em Gulp. Eu vejo um pré-processador para o Gulp, mas nada para definir o ambiente.
A questão é. O que eu posso fazer? Obviamente, não quero definir todos os arquivos JS o tempo todo e não quero três páginas HTML diferentes com diferentes tags de script.
No meu HTML, eu teria algo parecido com isto:
<!-- @if NODE_ENV == 'DEVELOPMENT' -->
<script src="js/example1.js" type="text/javascript"></script>
<script src="js/example2.js" type="text/javascript"></script>
<script src="js/example3.js" type="text/javascript"></script>
<!-- @endif -->
<!-- @if NODE_ENV == 'PRODUCTION' -->
<script src="js/project.js" type="text/javascript"></script>
<!-- @endif -->
<!-- @if NODE_ENV == 'RELEASE' -->
<script src="js/project.min.js" type="text/javascript"></script>
<!-- @endif -->
E meus plugins grunhidos ficariam assim:
env: {
dev: {
NODE_ENV: 'DEVELOPMENT'
},
prod: {
NODE_ENV: 'PRODUCTION'
},
release: {
NODE_ENV: 'RELEASE'
}
},
preprocess: {
options: {
context: {
name: '<%= pkg.outputName %>',
version: '<%= pkg.version %>',
port: '<%= pkg.port %>'
}
},
dev: {
src: 'index.html',
dest: '<%= pkg.outputFolder %>/index.html'
},
prod: {
src: 'index.html',
dest: '<%= pkg.outputFolder %>/index.html'
},
release: {
src: 'index.html',
dest: '<%= pkg.outputFolder %>/index.html'
}
},