Eu adoro o coffeescript, e hoje em dia estou trabalhando em um aplicativo móvel, usando Titanium & Alloy, e pensei comigo mesmo: “posso fazer com o coffeescript?”. E a resposta foi um grande SIM! Vou te mostrar como:
Primeiro, você precisa preparar nosso ambiente antes de sujar as mãos:
Vamos instalar o nodejs:
USUÁRIOS MAC
brew install node
USUÁRIOS DO LINUX
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update && sudo apt-get install nodejs
AMBOS OS SISTEMAS
sudo npm install -g coffee-script glob
Agora, Titanium CLI e Alloy:
sudo npm install -g install titanium
titanium login
titanium sdk install
titanium setup
sudo npm install -g alloy
Certifique-se de adicionar esta linha ao seu .bashrc (ou .zshrc, .bash_profile):
export NODE_PATH=[path_to_node]/node_modules
em que [caminho para o nó] é o caminho da instalação do seu nodejs.
Agora, vamos configurar o ambiente para reconhecer os arquivos .coffee.
Baixe este arquivo https://raw.githubusercontent.com/simonrand/coffee-alloy/master/coffeealloy.jmk e salve-o na pasta do aplicativo. Em seguida, crie o arquivo league.jmk na mesma pasta do aplicativo e adicione o seguinte conteúdo a ele:
var path = require('path');
task("pre:compile", function(event,logger) {
var coffeealloy = require(path.join(event.dir.home, 'coffeealloy.jmk'));
coffeealloy.pre_compile(event, logger)
});
task("post:compile",function(event,logger){
logger.info('compile finished!');
});
mais detalhes aqui: https://github.com/simonrand/coffee-alloy/blob/master/coffeealloy.jmk
E é isso! Agora seu aplicativo de titânio fala .café!
titanium build
Sempre que você criar o aplicativo, os arquivos .coffee serão analisados em arquivos .js e adicionados à mesma pasta. Isso é meio bagunçado, certo?!. Portanto, se você usar o Sublime Text 2, poderá ocultar esses arquivos .js do seu projeto. Para fazer isso, abra seu projeto com Sublime Text 2, vá para o menu Project e salve-o como your-project-name.sublime-project, bem no caminho raiz do seu projeto. Abra este arquivo e substitua-o com o seguinte:
{
"folders": [{
"file_exclude_patterns": [
"app/controllers/*.js",
"app/models/*.js",
"app/alloy.js",
"*.sublime-workspace",
"build.log",
".project"
], // hide js files from app folder
"folder_exclude_patterns": ["build"],
"path": "[full_path_to_your_project]"
}]
}
CONCLUSÃO
Estou sempre procurando o fluxo de trabalho perfeito e isso é apenas a ponta do iceberg. Se vocês tiverem mais informações para complementar essa dica, por favor, fiquem à vontade para comentar.