2016-01-07 23 views
9

私はパッケージ(babel-preset-es2015-webpack)と依存関係babel-preset-es2015を持っています。 babel-preset-es2015は依存性babel-plugin-transform-es2015-modules-commonjsを持っています。別の依存関係の依存関係を取得するには?

は、どのように私はそれが私のbabel-present-es2015依存性が使用しているのと同じパッケージであることを確認する方法でbabel-plugin-transform-es2015-modules-commonjsを必要としていますか?

は単純にやって:

require('babel-plugin-transform-es2015-modules-commonjs'); 

は(babel-plugin-transform-es2015-modules-commonjsの異なるバージョンを必要とする他の依存関係が存在しないと仮定した場合)NPM3の設定で動作しますが、NPM2では動作しません。

答えて

1

あなたは@Nocturnoで述べたようshrinkwrapを使用したくない場合は、単に依存関係に特定のパスを要求することができます。

require('<path-to-node_modules>/babel-preset-es2015-webpack/node_modules/babel-plugin-transform-es2015-modules-commonjs'); 

は、プラグインを自分自身を使用することはありませんが、上記のようなものが動作するはずです。

別のオプションは、それのpackage.jsonに記載されているし、あなたのpackage.jsonに追加されbabel-plugin-transform-es2015-modules-commonjsのバージョンを確認、その後、特定のバージョンにbabel-preset-es2015-webpackをロックダウンすることです。次に、NPM2とNPM3でrequire('babel-plugin-transform-es2015-modules-commonjs');メソッドを使用できます。

+0

これはNPM 2でのみ動作します。 – Gajus

+0

私の編集した応答を見てください。私はそれを残念ながらやり直す別の方法を考えることはできません。 – wjohnsto

+0

ヒント: ''のパスを取得するには 'require.resolve'を使用してください。 '/node_modules/'を解決するためにattmptを実行するイテレータを書くと( ''が解決されない場合) ' /../ node_modules/ '、' <ターゲットモジュール> /../../ node_modules/<ターゲット依存関係>これはnpm v2とnpm v3で動作します。あなたに答えを与える。それをコードに入れるだけです。 :) – Gajus