2017-02-01 16 views
0

事前にビルドされたモジュールを簡単にインポートできるようにパッケージを開発しようとしています。 私がカバーしたいユースケースは、プロジェクトXはあらかじめビルドされたモジュールYを使用していますので、私のモジュールはGitHubリリースを通してこの事前ビルドされたディストリビューションを簡単に作成できます。 だから私はこのような依存関係の構造を期待していた:だから、NPMとも糸が出て平坦化しているようだnpm第2レベル依存関係第1レベル依存関係を取得する必要がありますpackage.json(npmサブモジュール依存関係管理)

X 
|-Y 
    |-any-prebuilt 

をしかし

X 
|-Y 
|-any-prebuilt 

をインポートするときに、私は現在、私のトップレベルで終わるのです私は2番目のレベルの依存関係になると予想されるもののpostinstallに私のエラーを見ることができます。

bash-3.2$ npm install 

> [email protected] postinstall /Users/me/workspace/<X>/node_modules/any-prebuilt 
> node install.js 

Fetching prebuilt: 
version: latest 

Platform: osx 
Arch: x64 
Target dir: ./bin 
required user & repo 

この場合、2つの質問がありますが、ここでは何が欠けていますか?私にとってもそれが可能ですany-prebuiltpackage.jsonYになるのですか?

https://github.com/kanekotic/any-prebuilt

答えて

0

ので、私は今、自分の質問に答えることができると思います。 npmバージョン3以降、構造体はデフォルトでは平坦化されています(糸についても同じです)。依存関係のクラッシュの場合は平坦ではありません。

最終的なプロジェクトであれば、ここに(もしあれば)2つのオプションがありますので、npm installの実行中にフラグを使うことができます。

npm install --legacy-bundling 

私の場合、これはポジティブではありませんので、コードを変更してよりAPI指向にする必要がありました。したがって、私のlibを使用する予めビルドされたパッケージは実際に情報を提供する必要があります。

postinstallイベントを1段階上に渡しました。情報のレベルアップが必要となるスクリプトを追加していない

require('any-prebuilt').install(require('./package.json').prebuilt) 

だから、最後のアドバイス:そうbasicalleはありませんYpostbuild.jsファイルを宣言します。

参考文献:

https://codingwithspike.wordpress.com/2016/01/21/dealing-with-the-deprecation-of-peerdependencies-in-npm-3/

https://docs.npmjs.com/cli/install

関連する問題