2

npm を使用してパッケージをインストールおよび管理するのは素晴らしいことです。私がそれほど素晴らしいとは思わないのは、それが残すことができる混乱です。

クライアントとノードの両方の依存関係管理に npm を使い始めましたが、依存しているさまざまなパッケージの配置がさまざまに異なることに気付きました。libフォルダを持っているもの、srcフォルダを持っているものdistdocs、 、examplesなどがあります。これは、通常、これらのパッケージがソースから直接取得されるためであると理解しています。

私の質問は:

本番環境にデプロイするために、不要なファイルの削除を特定または自動化する方法はありますか? 私は考えています: readme.md (私が推測するのは簡単です) またはサンプルファイル (おそらく十分に簡単です) の削除。

理想的には、エントリ ポイントから依存関係ツリーがどのように見えるかを正確に計算し、不要なファイルや未使用のファイルを削除できるようにしたいと考えています。たとえば、画像やフォント、HTML に依存するクライアント パッケージの場合、これは明らかにはるかに困難です。

編集:

Alexander Mac (以下) が指摘したように、フロントエンド dep の優れた戦略は、クライアントの依存関係を dev-dependencies および build として含めることです。したがって、私の質問は nodejs アプリにのみ関連しています。

4

2 に答える 2

1

次を実行できます。npm pruneこれにより、packages.json で依存関係として指定されていない ./node_modules からモジュールが削除されます。

npm dedupe同等のモジュールをルート ./node_modules/ までプルすることにより、重複する依存関係を削除します。これがどれほど便利かはわかりませんが。私はそれを行い、間接的に使用していたモジュールがたくさんあり、直接使用することもできることに気付きました。

これを行う確実な方法は次のとおりです。

rm -rf ./node_modules ./bower_components npm install

いずれにしても、本番環境にリリースする前にクリーン ビルドを行うことをお勧めします。

また、私はsinopiaモジュールをローカルにキャッシュしてネットワーク トラフィックを軽減しているので、これらの再インストールにかかる時間が少し短縮されます。

于 2016-05-08T21:48:18.350 に答える
1

rollup.jsまたはwebpack2を使用して、コード (および deps) を 1 つのバンドルにビルドすることをお勧めします。

これらのモジュール ローダーは、ツリー シェイキングアプローチを活用して、実際に使用されるコードのみを含めます。

于 2016-04-23T22:51:10.767 に答える