2017-04-23 9 views
2

私はヤーンがもたらした利益とそれが何をしているのかを知っています。npmはそうではありません。糸はnpm以上のラッパーですか?

  • 糸がnpmと同じ動作を保持する他のコマンドのいくつかのためにボンネットの下にnpmを使用していた:私は、しかし、いくつかの疑問を持っていますか?
  • もしそうでなければ、それらが糸で再実装された理由はありますか?このアプローチには欠点がありますか?
+2

https://code.facebook.com/posts/1840075619545360 – ceejayoz

+1

私はそうは思わない、それはいくつかの同様のAPIを持っていますが、フードの下で異なるデザインです。前のapiが保持するのに十分だったので、同様のapiが実装されました。 –

答えて

4

いいえ、書き換えです。

は、npmクライアントのインフラストラクチャを構築し続けるのではなく、より全体的に問題を調べることに決めました。 の代わりに、のコアである の問題を解決する新しいクライアントを作成しようとした場合はどうなりますか?ロンドンオフィスのSebastian McKenzie は、このアイデアをハッキングし始め、すぐにその可能性について興奮しました 。

- https://code.facebook.com/posts/1840075619545360

(あなたが気づいた場合、いくつかのショートカットなし)これは、同じAPIを提供しています。元のインターフェースが十分に単純で採用を確実にするため、これは(私が推測している)ものです。

これははるかに高速で、npmの典型的な問題(主に非決定的な展開)を解決します。これはトップダウン書き換えでしか達成できず、デープがインストールされている(フェッチ、計算、ダウンロード、リンク)方法が変更され、ロジックが異なります。

このアプローチの欠点は、膨大な作業が必要だということです。通常、あなたはメインのレポをPRするだけですが、彼らは全く違ったことを望んでおり、Facebookには手段があり、彼らはソロになることに決めました。

もう1つの大きな欠点は、npmの古いユーザー全員がその利点をすぐに利用できないことです。これは、アップグレードではなくノードにインストールされていないためです。

+0

糸がnpm 4.6.1をインストールする必要があり、npm5と互換性がない理由、糸を使用しているときにnpmが必要な理由は矛盾ではありませんか?これを見て:https://github.com/yarnpkg/yarn/issues/4212 – stackdave

+0

それはインストール方法に依存して、私は信じています。 brewを使用してインストールする場合は、異なる要件を満たすことができます。 – jsdario

0

私はYarnのソースコードを見て、コマンドごとにカスタムコード(https://github.com/yarnpkg/yarn/tree/master/src/cli/commands)が書かれていることがわかりました。

このアプローチの欠点は、将来、npmが新しいコマンドを追加すると、Yarnチームが変更を追跡して手動で実装する必要があるということです。

関連する問題