昨日、「MacBookAir の容量がきついので Vagrant 環境を外付けに移した話」という記事を書きましたが、WordPress のテーマ・プラグインは Subversion で管理する必要があり、これまでは Subversion で WordPress の公式ディレクトリにだけアップしていたのですが、プルリクなどもらいやすいように GitHub にも公開するようにしたいと思っていたので、ついでに Grunt でその辺の環境も整えてみました。
下記のコマンドで開発環境のディレクトリから Subversion 用のディレクトリ、GitHub 用のディレクトリにファイルがコピーされるようになっています。
# GitHub 用のディレクトリにファイルをコピー grunt github # Subversion 用のディレクトリにファイルをコピー grunt svn
Grunt の準備
この Grunt の設定は複数の WordPress テーマ・プラグインの開発環境で共通に使えるようにしたかったので、簡単にインストールできるようにシェルスクリプトにしました。
vi gruntinit.sh npm init npm install --save-dev grunt grunt-contrib-clean grunt-contrib-copy
Gruntfile.js は下記のような感じです。GitHub 用、Subversion 用のディレクトリの中身を一旦全て削除して、開発環境から必要なファイルをコピーするようにしています。テーマ・プラグインを構成するファイルが追加される場合は特に問題無いと思いますが、ファイルが削除される場合は別途 git rm とか、svn delete したほうが良いかもしれません(ちょっとこの辺詳しくないです…)。
module.exports = function( grunt ) {
// load task
grunt.loadNpmTasks( 'grunt-contrib-clean' );
grunt.loadNpmTasks( 'grunt-contrib-copy' );
// Project configuration.
grunt.initConfig( {
dir: {
// Gruntfile.js から見た WordPress ルートへの相対パス
develop: 'vccw/www/wordpress',
// プラグインディレクトリ名
plugin: 'mw-wp-form',
// GitHub 用ディレクトリパス
github: '/PATH/TO/github/<%= dir.plugin %>',
// Subversion 用ディレクトリパス
svn : '/PATH/TO/svn/<%= dir.plugin %>/trunk'
},
copy: {
github: {
expand: true,
cwd: '<%= dir.develop %>/wp-content/plugins/<%= dir.plugin %>/',
src: '**',
dest: '<%= dir.github %>/'
},
svn: {
expand: true,
cwd: '<%= dir.develop %>/wp-content/plugins/<%= dir.plugin %>/',
src: '**',
dest: '<%= dir.svn %>/'
}
},
clean: {
options: { force: true },
github: {
src: [
'<%= dir.github %>/*/',
'<%= dir.github %>/*.*'
]
},
svn: {
src: [
'<%= dir.svn %>/*/',
'<%= dir.svn %>/*.*'
]
},
noneed: {
src: [
'<%= dir.github %>/.DS_Store',
'<%= dir.svn %>/.DS_Store'
]
}
}
} );
grunt.registerTask( 'github', [ 'clean:github', 'copy:github', 'clean:noneed' ] );
grunt.registerTask( 'svn', [ 'clean:svn', 'copy:svn', 'clean:noneed' ] );
};
実際のところ、仮想環境内のテーマフォルダやプラグインフォルダをそのままローカルリポジトリにしてしまって git-svn で Git と Subversion 同時に管理したほうが効率的だと思いますが、WordPress の公式ディレクトリにはリリース版だけあげて GitHub のほうには途中の物でもある程度こまめにあげるようにしたかったので、このような構成にしてみました。僕はあまり環境構築は詳しくないので、もっと効率の良い方法があるのかもしれませんが…。
WordPress プラグイン「MW WP Form」と現在公式ディレクトリに申請中のテーマ 「Kotetsu」を GitHub に上げたので、翻訳ファイルやパッチなどのプルリクお待ちしております^^;