1

ノードモジュールの依存関係のリストでpackage.jsonを維持しようとしました。npm install を呼び出すと、ノード モジュールがインストールされ、アプリ内にそのフォルダーが生成されます。私はnpmシュリンクラップと呼んでいます。しかし、これにより、ローカルノードモジュールへの依存関係が生成されます

  "dependencies": {
"async": {
  "version": "0.2.5",
  "from": "async@0.2.5",
  "resolved": "https://registry.npmjs.org/async/-/async-0.2.5.tgz"
},

アプリを appfog サーバーにアップロードすると、npm-shrinkwrap.json からインストールできます。したがって、理想的には、ノード モジュール フォルダーを削除し、shrinkwrap.json ファイルを渡すだけです。しかし、それはこの「から」を持っています。過去にシュリンクラップを生成しましたが、そこに「from」フィールドがありませんでした。「from」なしで生成する方法/ package.json からシュリンクラップ ファイルを取得できますか。私のアプリはよりスリムになります。すべてのノード モジュールをグローバルに維持できます。

ありがとう

4

2 に答える 2

1

私はあなたの質問に少し混乱しています。

Shrinkwrap は、依存関係をインストール、パッケージ化、アップロード、または何もしません。

インストールされているnode_modules をスキャンし、バージョンを (再帰的に) ファイルに記録するだけです。npm installそのファイルが定義された後の呼び出しは、ソフトウェア エンジニアリングの原則である反復可能になります。

「from」は数か月前に導入されました。このnpm shrinkwrapコマンドは、モジュールのインストール元の URL に設定しているようです。これはおそらく携帯用です。 npm installモジュール名を受け取り、レジストリ (URL は設定として構成可能npm config) を参照してインストールします。私は同じことをしてpackage.jsonnpm-shrinkwrap.jsonそれらを別のマシンに置き、そのマシンのnpm config設定が別のレジストリを指している場合、理論的には異なる結果を得ることができます。したがって、解決された URL をシュリンクラップ ファイルに埋め込むと、再現性がさらに向上します。npm install

レジストリ パラメータの設定の詳細については、npm config のマニュアル ページを参照してください。

github の npm issue 3145 によると、「from」設定は、1.2.x より前の npm システムとの下位互換性の問題を引き起こすことが知られています。アップグレードが唯一の解決策です。

https://github.com/isaacs/npm/issues/3145

于 2013-05-06T20:14:59.253 に答える