デフォルトでは、Jekyllはプロジェクトルートにあるファイルなら(特殊な意味を持つファイルでない限り)なんでもビルドしようとする。
my_jekyll_site
|- GemFile // safe
|- GemFile.lock // safe
|- _config.yml // safe
|- .gitignore // safe
|- index.md // BUILT
|- _posts // BUILT (日時等が解釈されてから)
|- ...
このやり方には1つ問題がある。例えばここにスクリプトファイルを置くと、そのファイルはビルド時にサイトに含まれてしまう。
my_jekyll_site
|- Gemfile
|- ...
|- script.sh // OOPS?!!?!?!?!?!?
スクリプトを置きたい理由は複数考えられる。例えば:
- ビルドの自動化スクリプトや
- Yarnでwebpackするときなどの設定ファイル
などである。
もちろん_config.yml
ファイルのexclude
キーで取り除くこともできるのだが、denylist型のこの設定はメンテが面倒で、知らない間に公開したくないファイルを公開してしまうことになりかねない。
_config.yml
exclude: ["webpack.js"]
実は、もっといいやり方がある。
source
キー
このキーを設定しておくと、Jekyllはプロジェクトルートの代わりに指定されたディレクトリの中身をビルドするようになる。(なぜ公式のスケルトンにこの設定が書かれていないか疑問)
_config.yml
source: "_src"
この例では、全ての関連ファイルを_src
ディレクトリに入れると問題なく動く。こうすれば、ビルド時にだけ必要で公開する必要のないファイルをプロジェクトルートにおいても問題ない。もう exclude
キーをメンテしなくて良くなる。
一点注意が必要なのがwebpackなどだ。webpackの出力先も_src
に向けないとおかしな結果を招くので注意だ。