2017-04-30 14 views
2

は私がNPMパッケージをインストールするときにローカルキャッシュにファイルを保存します反応糸--prefer-offlineは何をしていますか?

yarn add react 

これで初めて反応すると言う前提としています。私は多くのファイルを含むように.yarn-cacheを見つけました。私はそれが糸のローカルキャッシュフォルダだと仮定して、将来私が再び反応すると、それはローカルキャッシュからインストールされるでしょうか?

私は将来的に再び反応インストールする必要がある場合は、私は単に

yarn add react 

または

yarn add react --prefer-offline 

を書くべきですか?

答えて

5

糸は、デフォルトでは、インストール/復元時に常にインターネットからパッケージをダウンロードしようとしますが、キャッシュにも保存されます。これは、将来、復元してインターネットに接続していない場合は、キャッシュに戻って必要に応じてそこからインストールできます。 --prefer-offlineを指定すると、キャッシュを最初にチェックし、キャッシュ内で見つからない場合にのみインターネットからパッケージをダウンロードしようとするように、この動作を元に戻します。これにより、インストール/復元が大幅に迅速化され、繰り返し可能なビルドが可能になりますが、最新のバージョンを入手できない可能性があります(たとえば、〜1.2.3などのバージョン仕様を使用している場合)。 --offlineオプションもあります。ローカルキャッシュにパッケージが見つからない場合(つまり、インターネットからダウンロードしようとしないなど)、エラーが発生します。 --prefer-offlineを使用するためにはhttps://yarnpkg.com/blog/2016/11/24/offline-mirror/

-1

A quite popular guyここはS.O.言った:

"ソースを読む、ルーク!"

そして、ここではyarn CLIの--prefer-offline旗のthe sourceです:

commander.option('--prefer-offline', 'use network only if dependencies are not available in local cache'); 

お楽しみください!

2

詳細情報は、あなたが最初のセットアップにオフラインパッケージレポを持っています。

レッツ・ホームフォルダ内の隠しディレクトリでセットアップが私たちのキャッシュ:あなたがyarn installを実行するたびに、

yarn config set yarn-offline-mirror-pruning true 

yarn config set yarn-offline-mirror ./.npm-offline 

はまた、糸がdowloaded tarボールをきれいに持っている設定を設定しますいくつかのプロジェクトでは、モジュールはこのディレクトリにキャッシュされ、yarn --prefer-offlineを使ってフェッチすることができます。

キャッシュから新しいプロジェクトにインストールする場合は、latestという概念を持たないため、必要なモジュールのバージョンを指定する必要があります。

yarn add moment 

を私のマシンでは、この版画:@言及

yarn add [email protected] 

糸のブログpost:私は、その後で、最新オフラインでインストールすることができます

error Couldn't find any versions for "moment" that matches "latest" in our cache. 
Possible versions: "2.1.0, 2.13.0, 2.17.0, 2.17.1, 2.18.1, 2.19.1, 2.19.2, 2.19.3, 2.8.4" 
// Note that above is not in semver order... 

最も簡単には、単に追加しようとすることですadrianはどのようにプロジェクトごとのキャッシュを作成し、必要に応じてチームにコミットするかを詳しく説明します。私は、オフラインで新しいプロジェクトをブートストラップすることが理想的です。

+0

この「--prefer-offline」コマンドは、「yarn add」プロセスにデフォルトの動作を適用する必要がありますか?私は "ng new myproject"を使用して、パッケージマネージャーとして糸を使った角度のあるプロジェクトを作成しようとしています。これは、キャッシュにダウンロード済みのパッケージで行う必要があります(セキュリティ上の理由から、これらのリソースをロックする必要があるため)。 angle-cliは糸に "--offline"フラグを使用するように指示しているようには見えないので、キャッシュファーストの要件は有効に見えません。 – eugene

+0

糸がその設定で 'オフライン'または 'prefer-offline'を受け入れてオプションが出ているようには見えません。さらに、 'ng'は' ng set --global packageManager = * 'コマンドのように' npm'、 'yarn'または' cpnm'だけを受け入れます。だから私のアプローチは、1) 'cpnm'をインストールしておかないようにし、2)' --prefer-offline'フラグがセットされた糸を呼び出す 'cpnm'というパスにbashスクリプトを作ります。次に 'ng'のデフォルトパッケージマネージャとして' cpnm'を設定します。 – cyberwombat

関連する問題