GitHubプロジェクトのディレクトリ構成を自分なりに整理
目次
前提: デモはGitHubPagesで公開
GitHubでは、主に自作のjQueryプラグインを公開しています。
以前から、デモの公開場所にはusamimi.infoというホスティングサービスを利用しています。
無料かつ広告無しなのにPHPを使えるので、かれこれ7年以上愛用しています。
( http://www.usamimi.info/~sutara/ )
ただ、デモ一覧をPHP+SQLiteで管理しているのですがそのコードが古く、デモのソースを更新する場合はデータベースの値も変更したうえでFTP送信しなければならないなど、今の感覚では管理が面倒くさくなりました。
ここらで大掛かりな整理をしなければなりません。
手始めに、PHPを使わないデモはGitHubPagesで公開することにします。
PHPを使うデモだけをusamimiに残して、それらの管理と表示方法は後日じっくり考えます。
今後のディレクトリ構成
GitHubで管理しているプロジェクトをGitHubPagesでも公開する場合、「gh-pages」ブランチを作ってその中に必ずindex.html
を入れなくてはいけません。
このindex.html
の内容をどうするか悩みました。
プロジェクトの説明をあまり詳しく記述すればREADME.md
と被ってしまいますし。
プロジェクト内の特定のフォルダだけを「gh-pages」ブランチとすることもできるようですが、複雑にはしたくないので下記のような構成でいこうと決めました。
dist/
プラグインの本体。
jquery.hoge-fuga.js
、min.js
、その他CSSや画像など。demo/
デモ。README.md
プロジェクトの顔。
丁寧に解説。
デモへのリンクも設けるが、あくまで解説の添え物。index.html
デモの目次。
無味乾燥だが、完全な一覧。
(追記: 2017-04-27)
以下の「実例」と「コマンドひとつで」の内容は古くなっています。
現在では、masterブランチの./index.html
、または./docs/index.html
を用意して、リポジトリの「Settings」で選択するだけでGitHub Pagesを公開できます。
実例
プロジェクト用ページの作成方法は色々あるようです。
しかし、「master」の内容を丸ごと流用するなら、git push origin master:gh-pages
というコマンドだけでOKです。
自動でリモートのみに「gh-pages」ブランチを作ってくれて、デモのページもすぐに表示可能になります。
今回は、「jquery.csv-calc」というプラグインのプロジェクトを前述の方針で整理しました。
- 「master」ブランチ: https://github.com/sutara79/jquery.csv-calc
- 「gh-pages」ブランチ: https://github.com/sutara79/jquery.csv-calc/tree/gh-pages
- デモ: http://sutara79.github.io/jquery.csv-calc/
(参考: 今さら聞けないgit pushコマンド - Shoichi Matsuda’s diary)
コマンドひとつで
今後はソースコードを変更したら、その都度「master」と「gh-pages」の両方へpushします。
# masterブランチへ git push origin master # その後、gh-pagesへ # デモも更新される git push origin master:gh-pages
なお、あらかじめプロジェクト内の.git/config
を編集しておけば、コマンドひとつで両方へpushできるのでお手軽です。
例として、「jquery.csv-calc」の.git/config
は下記のようになっています。
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true hideDotFiles = dotGitOnly [remote "origin"] url = git@github.com:sutara79/jquery.csv-calc.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
下記のように[remote "origin"]
の欄に追記します。
[remote "origin"] url = git@github.com:sutara79/jquery.csv-calc.git fetch = +refs/heads/*:refs/remotes/origin/* push = +refs/heads/master:refs/heads/gh-pages push = +refs/heads/master:refs/heads/master
これでgit push origin master
だけで、事前に-u
や--set-upstream
を行っていればgit push
だけで、両方へpushしてくれます。
下記は実際の実行結果です。
$ git push Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 520 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) To git@github.com:sutara79/jquery.csv-calc.git fa42708..17f78c4 master -> gh-pages fa42708..17f78c4 master -> master