どうも、中田です。
gruntでアプリをデプロイするときにどうやったらいいかぁ〜って調べてたら
こんなの見つけました。
grunt-rsync
rsyncとはご存知unixのミラーリングコマンド
cpとは違って削除ファイルも同期してくれるのがありがたい。
gruntでビルドしたディレクトリを同期対象にしちゃえば楽チンですね。
という訳で作業メモを残しておきます。
前提
・送信側、受信側両方にrsyncが入っている
・送信元から受信側へのssh鍵認証ができていること(.ssh/config設定)
grunt-syncのインストール
作業ディレクトリに移動してnpmでインストールします
npm install grunt-rsync --save-dev
Gruntfile.js ファイル編集
Gruntfileに初期設定とタスクの設定をします
module.exports = function(grunt) {
grunt.initConfig({
rsync: {
dryrun: {
options: {
src: "./dist/*", // 送信元のディレクトリ
dest: "~/app", // 受信側側のディレクトリ
host: "[.ssh/configの設定ホスト]",
recursive: true,
compareMode: "checksum",
syncDestIgnoreExcl: true,
dryRun: true,
exclude:[ ".git*","*.scss" ]
}
},
deploy: {
options: {
src: "./dist/*", // 送信元のディレクトリ
dest: "~/app", // 受信側側のディレクトリ
host: "[.ssh/configの設定ホスト]",
recursive: true,
compareMode: "checksum",
syncDestIgnoreExcl: true,
exclude:[ ".git*","*.scss" ]
}
}
}
});
grunt.loadNpmTasks('grunt-rsync');
grunt.registerTask('dry', ['rsync:dryrun']);
grunt.registerTask('deploy', ['rsync:deploy']);
};
では、実行!!!
grunt deploy
リモートサーバに適用されることを確認できたら大成功!
これは楽ですね。
感謝サイト
http://kanonji.info/blog/2013/08/19/grunt-rsyncとgrunt-watchを使って開発サーバーをローカルと同期/








