【问题标题】:How do I minify my source code before deployment如何在部署之前缩小我的源代码
【发布时间】:2011-12-28 00:25:48
【问题描述】:
我正在通过使用 capistrano 从 git 部署一个 php 项目。我目前正在通过一些 capistrano 任务来缩小我的 javascript(使用 jammit)和 css(使用 yui)。我看到的问题是我在目标服务器上进行此缩小,而不是在本地预先部署代码库。令人担忧的原因是我将 javascript 缩小从 yui 切换到 jammit,并且不想在我的部署服务器已经安装这个新的 ruby gem 时在多个生产服务器上安装它。我从其他开发人员那里继承了 capistrano 文件,因此我不是 100% 清楚代码何时签出、何时发送到远程服务器以及我应该执行什么任务。
我最初的想法是这样做 before "deploy" 但同样,我不确定我是否有可用的源代码。
【问题讨论】:
标签:
git
capistrano
minify
【解决方案1】:
简短的回答是“你不知道”。 deploy 钩子调用 deploy:update_code
部署:update_code,{:except=>{:no_release=>true}}
将您的项目复制到远程服务器。这是任何部署的第一阶段;将更新的代码和资产移动到部署服务器。但是,您很少会直接调用此任务;相反,您应该调用 deploy’ task (to do a complete deploy) or the update' 任务(如果您想单独执行 `restart' 任务)。
您需要确保将 :scm 变量设置为您正在使用的源代码控制软件(默认为 :subversion),并将 :deploy_via 变量设置为您要用于部署的策略(默认为:结帐)。
一下子做到以下几点:
- 结帐代码
- 邮政编码
- 将代码移动到远程服务器
- 清理本地代码
(根据您的部署设置有一些变化)。
然而,
我能够通过使用下载和上传命令来解决这个问题。
tmp_path = "/tmp/#{release_name}/public"
download "#{current_path}/public/javascripts", "#{tmp_path}/javascripts/":via => :scp, :recurisve => true
system "jammit -o #{tmp_path}/javascripts -c #{tmp_path}/javascripts/assets.yml"
upload "#{tmp_path}/javascripts/common.js", "#{current_path}/public/javascripts", :via => :scp
system "rm -rf #{tmp_path}"
我不喜欢它,因为它不太干净,但它可以按照我需要的方式完成工作。