かれこれ何年も「テキストエディタで編集→FTPクライアントでアップロード」という流れでサイト制作をやってきましたが、さすがに前時代すぎると思いGruntを使いはじめました。
できることが多くあって色々やってみたいですが、まずは「編集されたファイルをアップロードする」という点だけの自動化を試してみました。
FTPでのアップロードについてはgrunt-ftp-deployを使用するケースが多いですが、grunt-ftpushというプラグインを使うと簡単に「更新したファイルのみ」をアップロードすることができます。
Gruntのプラグインページで「FTP」と検索するといろいろ出てくるので、もしかしたらftpush以外にも同じ機能のプラグインもあるかもしれません。
基本的な使い方はftp-deployとほぼ同じです。
Additionally it tries to intellectually upload only changed files.
・・・だそうです。
ADs
※GruntやNode.jsのインストール方法についてはあちこちで情報が見つかると思いますのでググってみてください。
ファイルの更新を監視して、変更があればFTPでアップロード、という流れなのでgrunt-contrib-watchも使います。
1 2 |
npm install grunt-contrib-watch --save-dev npm install grunt-ftpush --save-dev |
FTPのユーザー名、パスワードを記述した.ftppassというファイルを作成します。
キー名は何でもかまいませんが、のちほどGruntfile.js内で使用します。
1 2 3 4 5 6 |
{ "キー名": { "username": "ユーザー名", "password": "パスワード" } } |
watchで変更を監視して、ファイルに変更があればftpushを実行する、という流れです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
module.exports = function(grunt) { grunt.initConfig({ ftpush: { build: { auth: { host: 'FTPサーバ名', port: 21, authKey: '.ftppass内に書いたキー名' }, src: '', dest: 'FTPのアップ先のディレクトリ', exclusions: ['.*','node_modules/*','**/Thumbs.db','Gruntfile.js','dist/tmp'], <--除外ファイル keep: [], simple: true, useList: false } }, watch: { 'ftpush':{ files: ['**/*.php','**/*.css','**/*.js'], <--監視対象ファイル tasks: ['ftpush'] } }, }); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-ftpush'); grunt.registerTask('default', ['watch','ftpush']); }; |
あとはコマンドプロンプトで
1 |
> grunt watch |
と入力すれば、監視がはじまります。
私の環境では、初回だけは変更されたファイルだけでなくすべてのファイルがアップロードされました。
2度目以降は変更されたファイルのみがアップロードされるようになりました。
Gruntはプログラマ向けの環境でもっと難しいものかと思っていましたが、プラグインだけで解決する処理であればそれほど迷うことなく環境を構築することが出来ました。
自動的にアップロードする、という機能だけを見れば、同種の機能を備えるIDEもあるので、どういう環境が自分に向いてるかも試しながら探してみたいと思います。
ADs