2017-12-12 22 views
2

私は、私が取り組んでいる2つのSassプロジェクトを持っています。 ProjectBaseとProjectExtendedと呼んでみましょう。 ProjectExtendedはProjectBaseに依存し、ProjectBaseは第三者ノードモジュール、すなわちBootstrapに依存する。npmでSassプロジェクトの連鎖依存関係を処理する方法は?

ProjectBaseは独立している必要がありますが、依存関係として使用しても機能します。

ProjectBaseが、これはそれに含まれていることはSassのファイルです:

@import '../node_modules/bootstrap/scss/bootstrap';

ProjectExtendedはこれを持っているが含まれます:

@import '../node_modules/ProjectBase/scss/ProjectBase'

npm installを実行した後、ProjectBaseは問題なく構築できます。これは、インクルードファイルがそのパスのnode_modulesにあるためです。

npm installを実行した後、ブートストラップソースはProjectBaseの観点から、もはや同じ相対場所ではないので問題はProjectExtendedで発生:あなたはこの場合のブートストラップで見たよう

-node_modules/ |--bootstrap |--ProjectBase

突然の兄弟の代わりに、そのような依存関係です:回避策として

-node_modules/ |--bootstrap |--ProjectBase |--node_modules |--bootstrap

、私は手動でに入りますと入力してnpm installを実行すると、それらの依存関係がそのフォルダの下にもう一度インストールされます。

これを処理するより良い方法はありますか?

答えて

0

この問題は、custom importernode-sassに提供することで解決できます。私はsimple implementationあなたが使用しようとすることができますそのような輸入業者のあなたの.scssファイル内のインポートを解決するために必要なすべてのパスとルールを設定することができます。

あなたのディレクトリ構造が正しく理解されている場合、あなたの場合の設定は{roots: ['node_modules','../node_modules']}のように見えるかもしれません。