Grunt.js - 删除/清除远程服务器上的文件夹

时间:2014-03-16 21:37:25

标签: node.js git gruntjs

在我的项目中,我有两台服务器:开发和生产。我正在使用Git管理静态文件(CSS / JS等),并使用Grunt管理数据库。但是在部署数据库之后,我需要从生产服务器中删除Cache文件夹。我怎么能和Grunt一起做?

顺便说一下,我可以在没有使用Grunt的Git的情况下管理我的文件吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

正如我想的那样,这很容易:

对于这个任务之王,您只需要grunt-shellgrunt-ssh个包裹。我只遇到一个问题--SSH拒绝连接,因为ssh-agent目前还没有激活。以下是将git提交提取到远程服务器并部署数据库的示例代码:

shell: {
  git: {
    command: ['eval `ssh-agent -s`', 'ssh-add ~/.ssh/yourKey.pem', 'grunt sshexec:gitpull'].join(' && ')
  },
  db: {
    command: ['eval `ssh-agent -s`', 'ssh-add ~/.ssh/yourKey.pem', 'grunt db_push', 'grunt sshexec:clear'].join(' && ')
  }
},
sshexec: {
  gitpull: {
    command: ['cd /var/www/', 'sudo -u yourSudoUser git pull --no-edit'].join("&&"),
    options: {
      host: 'youHost.com',
      username: 'username',
      agent: process.env.SSH_AUTH_SOCK
    }
  },
  clearCache: {
    command: ['cd /var/www/core', 'sudo rm -rf cache'].join("&&"),
    options: {
      host: 'yourHost.com',
      username: 'username',
      agent: process.env.SSH_AUTH_SOCK
    }
  }
}

- 无编辑 - 如果没有设置,git会提供GNU nano的窗口,您必须在其中编辑提交消息。此窗口无法关闭,因为Nano快捷方式在当前会话中不起作用。

'eval ssh-agent -s','ssh-add~ / .ssh / yourKey.pem' - 启动 SSH-agent 并添加keyPair。 NB!请注意,在ssh-agent启动后,在shell任务中执行 grunt sshexec:gitpull 。否则,在单独的任务中执行sshexec时,您将无法访问ssh-agent。

'grunt db_push' - grunt-deployments 模块的任务。

还有一件事:考虑将Grunt和npm更新为npm update npm -gnpm install grunt@0.4.4 -g的最新版本。更新后,这个任务非常顺利。