4

わかりました、少し奇妙な状況があります。インターネットにアクセスできないシステムに配信されるノード アプリケーションがあります。package.json ファイルにすべての依存関係がありますが、サーバーを配信するときに npm install を実行できません。

現在、node_modules ディレクトリが SVN にチェックインされています。モジュールの新しいバージョンを取得する必要があるたびに、SVN からモジュール全体を削除し、新しいバージョンをインストールし、それを SVN に追加してチェックインするので、これまでのところ私はこれを嫌っています。

私が持っている他のオプションは、配信用にノードアプリケーションをパッケージ化するときにnpmインストールを行う何らかのビルドを用意することです. おそらく、SVN からチェックアウトし、npm インストールを実行し、必要な tarball または rpm を作成するものです。

私は過去にルビーに「bundler」を使用しましたが、すべての依存関係を別のディレクトリに置くだけで、それらの依存関係が取り込まれるので、これは非常に便利です。オフラインの場合に最適です。ノードのようなものはありますか?

4

3 に答える 3

3

同様の回答を探しているときに、完全なnode_modulesをソース管理に保持する意味がある理由について、この記事を見つけました。

git の node_modules

2011年12月10日のものなので、今となっては少し古くなっているかもしれません。

更新: 2014 年 1 月現在、すべてのnode_modulesをソース管理に保存するというアドバイスは引き続き適用されます。

于 2013-10-25T07:01:22.967 に答える
3

これを管理するのに役立つshrinkpackというCLIがあります。

によって生成された依存関係グラフを読み取り、各依存関係 (およびサブ依存関係)npm shrinkwraphttps:// URL を再ポイントして、代わりにプロジェクトのnode_shrinkwrapディレクトリ内の tarball をポイントすることによって機能します。

node_shrinkwrapディレクトリには、npm レジストリからダウンロードしたものとまったく同じ.tgzファイルが含まれています。ファイルが存在するため (によって作成され、によって更新されます) 、ネットワーク経由で npm レジストリに移動する代わりに、ローカルで見つかった tarball を使用してインストールすることを認識しています。 .npm installnpm-shrinkwrap.jsonnpm shrinkwrapshrinkpacknpm install

npm install -g shrinkpack
于 2015-04-13T07:11:26.523 に答える