Cli: [機能]すべてのパッケージの構成標準

作成日 2020年05月15日  ·  2コメント  ·  ソース: npm/cli

これが実行可能かどうか、またはNode.jsリポジトリに属しているかどうかはわかりません。

何/なぜ

特定の依存関係では、(たとえば)全体的な環境で適切に機能するために特定のビルド構成が必要になる場合がよくあります。

この構成は、Babel構成、Webpack構成、またはそのパッケージ専用のカスタム構成である可能性があります。

現在のところ、パッケージを構成するための標準化された方法はありません。

パッケージにちなんで名付けられたpackage.jsonフィールドを配置する規則を使用する人もいますが、パッケージはそれを読み取ることができます。 しかし、それは十分に標準的ではありません。

いつ

パッケージが実行時またはビルド時にカスタム構成を必要とする場合。

どこ

どのように

JavaScriptが特定の場合にビルドステップを必要とする場合があります。 この構成機能には、任意のパッケージに渡すことができるオプションの「依存関係の構築」オプションがあります(ネイティブモジュールを構築する場合でも、JavaScriptを下位の形式にトランスパイルする場合でも)。

構成によっては、パッケージに特定の依存関係が必要になる場合がありますが、そうでない場合は必要ありません(feビルドの依存関係)。

したがって、パッケージシステムは、ユーザーが特定のパッケージ構成を持っている場合に、インストールする追加の依存関係を決定できるという点で、十分にスマートです。

たぶん、この機能は既存のネイティブモジュールシステムからJavaScriptシステム全体に拡張する必要があるだけです(使いやすい方法で、ネイティブモジュールはトリッキーです)。

これは、オプションの依存関係などにも非常に役立ちます。 configを使用すると、ライブラリが(たとえば) three代わりにbabylonjs three使用するように指定するのは簡単です。 これにより、適切な依存関係がインストールされます。 これはピアの依存関係に似ていますが、より簡単であり、オプションのdepsに依存する特定のパッケージには、特定の条件が指定されているかどうかを判断するために構成APIに確実にアクセスする標準的な方法があります(現在は注意が必要であり、node_modulesのシストムトラバーサルは非これらの場合の標準)。

現在の動作

  • 該当なし

予想される行動

  • 上で高レベルでカバー

別の例として、パッケージコンシューマーは、コードをさまざまな方法でコンパイルするために、通常のコンパイル済み出力ではなくパッケージソースを使用する必要がある場合があります(通常、私はWebpackでこれを実行したいと思っています)。

一般に、そのようなことには問題があり、これまでのところNPMは一般的な処理方法を提供していません。

パッケージの作成者とそのユーザー

参考文献

  • 該当なし
Enhancement

最も参考になるコメント

開発者がこの種の問題を修正する際に多くの困難に直面することがあるため、この機能は驚くべきものになります。

全てのコメント2件

この機能により、パッケージの作成者は、標準的な方法で、「ああ、通常のパッケージファイルに組み込まれているのではなく、CSSを外部にしたいのですが、問題ありません。そのような機能を追加するだけで、」と言うことができる機能をパッケージに追加できます。および-プロジェクト構成のこのようなオプションの場合、このパッケージは出力からCSSを自動的に除外します。」そして、その標準構成が与えられると、パッケージ作成者はWebpack、Babel、または必要なツールを使用して結果を得ることができます。

この意味で、すべてのパッケージには、ユーザーがオプションを通信できるようにする標準的な方法があります。オプションは、パッケージが使用するソースファイルまたはビルドツールに関係なく、依存関係またはビルドステップの代替セットを指示する場合があります。

ユーザー側で構成がありますが、そのようなオプションは、インストール中などに実行する依存関係(したがってビルドツール)を指示するパッケージ側の構成にマップされます。

ほとんどのパッケージを見て、デフォルトのソースコード出力を出荷し、一部のユーザーはそれをカスタマイズしました。

TypeScriptソースコードをコンパイルするための最良の方法は、宣言ファイルの発行

TypeScriptは、消費者はTypeScriptソースを決してトランスパイルしてはならないと宣言していますが、その関連する問題のために必要になる可能性のある穴を掘り起こしました。 私は、構成標準が非常に役立つ可能性がある1つの例としてのみ使用しています。

開発者がこの種の問題を修正する際に多くの困難に直面することがあるため、この機能は驚くべきものになります。

このページは役に立ちましたか?
0 / 5 - 0 評価