技術

【Grunt】楽々デプロイ(grunt-rsync)

投稿日:2015年8月31日 更新日:

どうも、中田です。

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を使って開発サーバーをローカルと同期/

-技術

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

自分のEvernoteをブログとして公開できる『Postach.io』を使ってみました

こんにちは。たなかです。 自分のEvernoteをブログとして公開できる『Pos …

Slack Tasker系アプリで絵文字ステータスを自動設定(android 「Automate」)

Slackの絵文字ステータス、皆さん使っているでしょうか? 私は自分の居る場所に …

Dockerでwheneverが動かない (bundler: failed to load command: bin/rails (bin/rails))

どうも中田です。 久々の投稿になります。 正確にはwheneverで登録したcr …

no image

Angular6で子コンポーネントに文字列を渡す

文字列と変数の値を渡す時、記述が少しだけ違います。 // 文字列を渡したい時 & …

no image

【ionic】リリースする!ちょっとその前に(version指定)

どうも、中田です。 ionic便利ですよね。 コマンド一つでマルチプラットフォー …