-
-
Notifications
You must be signed in to change notification settings - Fork 25
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
Conflicting resolution priority between local theme and npm package #524
Comments
というステップがビルド時に追加されることになり、相当な時間がビルド時間にかかってしまうことからそのままこの提案を受け入れることは難しいです。 |
なお、 |
ありがとうございます。おっしゃる通りレジストリを見に行くのは実用的ではなさそうです。
この実装案が少しわからなかったのですが、素朴な案として「npm-package-argにかける前に、パスとして解釈して存在するか・Vivliostyle Themeパッケージか判別する」処理を挟むのは不都合がありそうでしょうか? |
|
正直なところ、バグの原因になりそうなのは同意します。
実装を変える場合、カレントディレクトリの flowchart LR
s0{"そのディレクトリにnpmパッケージが存在する?"}
s1{"(既存の処理)"}
s2["パッケージを使用する"]
s3["エラー「ディレクトリも、レジストリにパッケージも存在しない」"]
s0 -- yes --> s2
s0 -- no --> s1
s1 -- yes --> s2
s1 -- no --> s3
レジストリにパッケージがないケースは現状でもインストールに失敗するのでまだよいほうです。 |
完全な解決策ではありませんが、インストールしたパッケージがVivliostyle Themeに準拠しているかどうかを判定することである程度は解決可能です。例えば、インストールしたパッケージのpackage.jsonに |
実装を複雑にしたくないのは十分理解いたします。
という感じでしょうか。
パッケージがVivliostyleテーマかどうか判定できるようにするのはこの件に限らず役に立つかもしれませんが、既存のテーマへの影響が気にかかります。 |
私は #524 (comment) の案のローカルにnpmパッケージ(package.json が存在)があればそれを優先するというのが分かりやすいと思います。ディレクトリの存在だけではなく package.json の存在もチェックすることで、公開テーマの利用を意図しているのに、たまたま同名のディレクトリがローカルにあるために、意図した動作にならなくなるということは防げると思います。 |
theme
に指定したディレクトリ名と同名のパッケージがnpmに存在する場合、ローカルのパッケージよりnpmのパッケージが優先されます。以下の例ではcss
ディレクトリが無視されcssがインストールされます。vivliostyle.config.js
css/package.json
theme
を./css
のように指定することで回避できますが、他フィールドがファイル名のみの表記で正常に処理される(manuscript.md
、output.pdf
)ことを鑑みると、一貫性を欠いた挙動に感じられます。また、非公開のテーマについてnpmに同名のパッケージがあるか確認することもまずないかと思います。この場合にはローカルのディレクトリ指定が優先されたほうが有用ではないでしょうか。The text was updated successfully, but these errors were encountered: