Já faz um tempo desde que eu desenvolvi substancialmente a web e gostaria de aproveitar as práticas mais recentes, mas estou lutando para visualizar o fluxo de trabalho para incorporar tudo.
Aqui está o que eu estou procurando usar:
- Framework CakePHP
- jsmin (JavaScript Minify)
- SASS (folhas de estilo incrivelmente impressionantes)
- Git
CakePHP:
Muito auto-explicativo, faça modificações e atualize a fonte.
jsmin:
Ao modificar um script, você executa manualmente o jsmin para gerar o novo código minificado ou seria melhor executar um gancho de pré-confirmação que gera automaticamente saídas jsmin dos arquivos javascript que foram alterados. Suponha que eu não tenha conhecimento de implementar ganchos de confirmação.
SASS:
Eu realmente gosto do que o SASS tem a oferecer, mas também sei que o código SASS não é suportado pelos navegadores por padrão; portanto, em algum momento, o código SASS precisa ser transformado em CSS normal. Em que ponto do fluxo de trabalho isso é feito.
Git
Estou com medo de admitir, mas, na última vez que desenvolvi substancialmente a Web, não usei o controle de origem do SCM (IE, usei o controle de origem, mas consistia em um log de alterações muito detalhado com backups).
Desde então, tenho muita experiência em usar o Git (além de mercurial e SVN) para o desenvolvimento de desktops, mas estou me perguntando como implementá-lo da melhor maneira para o desenvolvimento da web).
É prática comum implementar um repositório remoto no host da Web para que eu possa enviar as alterações diretamente para o servidor de produção ou existe alguma ferramenta de plataforma cruzada (windows / linux) que facilita o upload de apenas arquivos alterados para o servidor de produção . Existem empresas de hospedagem na Web que facilitam a implementação de um repositório remoto, preciso de acesso SSH, etc ...
Eu sei como fazer isso no meu próprio servidor de teste com um repositório remoto com uma ramificação de rastreamento remoto separada, mas nunca o fiz em um servidor de hospedagem de produção remota antes, então ainda não estou ciente das opções.
Extra:
Eu estava pensando em implementar uma estrutura javascript em que arquivos javascript separados usados em uma página são compilados em um único arquivo para cada página no servidor de produção para limitar o número de downloads de arquivos necessários por página.
Algo assim já existe? Já existe um projeto de código aberto que implementa algo semelhante com o qual eu poderia usar e contribuir?
Considerando como os desenvolvedores da Web paranóicos são sobre desempenho (e o fato de o número de solicitações de arquivos em um site ser um grande sucesso para o desempenho), estou supondo que haja algum hacker assistente na rede que já tenha abordado esse problema.
fonte
jsmin
Se você não tiver uma tonelada de JS, poderá configurar algo para reduzir a cada vez que clicar em salvar. Se você possui muitas JS, faça parte do seu processo de implantação (veja Git abaixo).
SASS
Use o Compass Framework . Ele inclui o SASS, além de um pequeno script que "observa" o diretório do SASS e compila os arquivos em CSS (incluindo CSS minificado, se você desejar) toda vez que você salvar. Ele foi criado com o RoR em mente, mas você pode usá-lo facilmente com qualquer estrutura da Web criando um arquivo de configuração do Compass e executando o comando "compass watch". O Compass também inclui muitas outras ferramentas úteis, como Blueprint , mixins úteis e geração automática de sprites por meio do plug-in Lemonade (que deve ser incorporado ao Compass na próxima versão ).
Git
Dependendo do tamanho / complexidade do site, considere seguir as instruções do Capistranomodelo de implantação. Não tenho certeza se você pode usar o Capistrano diretamente com o CakePHP, mas o essencial é este: cada servidor de produção possui uma pasta "atual" que contém todo o código que está sendo executado na produção naquele momento. Cada vez que você deseja implantar um novo código, você executa um script que é ssh para cada servidor de produção e solicita que (a) copie o conteúdo da pasta "atual" para uma pasta de backup (com o nome da versão / carimbo de data / hora), ( b) verifique o código mais recente do Git na pasta "atual" e (c) comece a veicular esse novo código na pasta "atual". Dessa forma, você pode reverter para qualquer release anterior, se necessário, e saber exatamente qual revisão está em produção. O Capistrano também permite adicionar todos os tipos de tarefas personalizadas como parte do processo de implantação, incluindo minifração JS / CSS,
Extra
Sim, há um monte. Google para algo como "CSS / JS concat". Aqui está uma rápida que eu encontrei para CakePHP: Asset Packer .
fonte