0
Help us understand the problem. What are the problem?

posted at

Jekyllでビルドするファイルを別ディレクトリに入れて不要なファイルの公開を防ぐ

デフォルトでは、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に向けないとおかしな結果を招くので注意だ。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?