-
-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Theme files/dirs in entryContextDir should be preserved in the output #160
Comments
この変更は breaking change ともいえますが、 entryContextDir と local theme の指定があるときだけ影響があります。 entryContextDir はその指定をしたときの動作があまりよく分からなかったのでドキュメントに載せていません: いまのうちであれば、マイナーバージョナップでの変更でも問題は少ないと思います。 |
目的について勘違いをしていたらすみません。スタイルシートとコンテンツから同じファイルにアクセスしたく、なおかつ |
なるほど、 entryContextDir の役割が entry と theme を分離するためということであれば theme のパスを entryContextDir からの相対パスとはしないことに意味がありますね。私が疑問だったことのひとつは、config の中で entry 以外にも toc と cover が entryContextDir からの相対パスなのに theme はなぜ違うのかということでしたが、toc や cover は entry 内容とセットであり1つの出版物に固有であるのに対して、theme は複数の出版物で共通に使えるものだから扱いが違うということですね。 しかしそれでも、スタイルシートを原稿ファイルと同じ場所に置いて、その場所に entryContextDir を設定するという使われ方はあると思います。リポジトリのルートには成果物のWeb出版物には含めない雑多なファイルがあるので、原稿やWeb出版物に含めることになるスタイルシートや画像類はそれらをまとめたサブディレクトリに入れて、そこを entryContextDir にするという使われ方です。 vivliostyle-cli/tests/fixtures/builder/entryContext.config.js Lines 1 to 11 in 1f1e48f
この例では、 entryContextDir に設定された 'manuscript' ディレクトリ内に原稿ファイルもtocファイルもcover画像ファイルもあり、そして theme の 'sample-theme.css' もあります。 これで build すると、次の結果になります: vivliostyle-cli/tests/builder.test.ts Lines 104 to 111 in 1f1e48f
生成されたWeb出版物の中で、HTMLや画像ファイルはルートにあるのに、CSSファイルだけ 'manuscript' ディレクトリにあります ('manuscript/sample-theme.css')。この仕様は理解されにくいし、以下の問題があります:
提案の修正元のissueタイトルの "Local theme path should be relative to the entryContextDir" は取り消して、次の提案のみとします:
ただし、theme の場所が entryContextDir の外にある場合はこれまでどおりとする。 どうでしょう? |
vivliostyle.config.js で entryContextDir を指定した場合、entry と toc と cover の path は entryContextDir からの相対パスになります。
しかし、theme の path だけは vivliostyle.config.js からの相対として扱われるようになっています。
これも entryContextDir からの相対パスに変更することを提案します。また、ローカル theme について、いま行っている theme のファイルのコピーを行わないで、そのままの相対 URL で HTML からリンクされるようにすることを提案します。entryContextDir から workspaceDir への theme のファイルのコピーは、通常の assets のコピー (
copyAssets()
) で行えるように src/config.ts のDEFAULT_ASSETS
に'**/*.css'
を加えます。関連 Issue: CSS file linked from HTML entry is not copied to workspaceDir and ignored in the output (#152)
この変更により、
vivliostyle.config.js ファイル内で指定されたリソースの相対パスの基準が entryContextDir に統一されて分かりやすくなり、また、スタイルシート(css)とコンテンツ(html, md)から同じリソース(画像ファイルなど)にアクセスできるようになるメリットがあります。検討・注意点
workspaceDir が指定されていて entryContextDir と異なる場合のみtheme を workspaceDir/themes ディレクトリ内にコピーするコマンドラインで指定する theme の相対パスの基準はカレントディレクトリのままとするコマンドラインで markdown 原稿が指定された場合その場所が entryContextDir になるが、それはコマンドラインでの theme の相対パスの解釈には使わないThe text was updated successfully, but these errors were encountered: