どうも、中田です。
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を使って開発サーバーをローカルと同期/