2017-09-28 42 views
1

私はさまざまなAngular 2プロジェクトを開発しています。複数のプロジェクト間でnode_modulesフォルダを共有したいと思います。異なるプロジェクト間でnode_modulesを共有

MainFolder 
- Project1 
- Project2 
- package.json 

このように、私はすべてのプロジェクトに対して1つのpackage.jsonしか持たないでしょう。私の答え:これは可能ですか? 可能であれば、npm install-gで昼食しなければなりませんか? -gの仕組みを理解できません。 誰かに教え方を教えてもらえますか? 非常にありがとう

私はangle-cliでプロジェクトをビルドすると言ったことを忘れました。

+0

試しましたか? – msanford

+0

私はMainFolderでnpm install -gを試しましたが、Project1を実行するにはProject1フォルダにnpmのランチを入れる必要もありますか? Project1を実行することはできません... – bigskull

答えて

0

Hereは(すなわち、-gまたはコマンドに追加--global付き)、それ は、現在のパッケージのコンテキスト(すなわち、現在のインストール、各種NPMは、グローバルモードでは、引数

をインストールに関するドキュメントです ディレクトリ)をグローバルパッケージとしてインストールします。

-gは、環境に応じて場所をインストールするには見つけることができますあなたが望むものを達成することができhere

一つの方法は、両方のプロジェクトのための1つの解決策を持っていることですし、各プロジェクトのルートは、それが自分のlazy loaded moduleだ使用しています。

リソースを共有する特定のビジネスニーズがある場合を除き、それぞれのプロジェクトをそれぞれのリソースと設定で分けて保存する方がよいでしょう。

0

-gグローバルインストールのスタンド、つまり、インストールするパッケージはすべてのアプリケーションで使用できます。

なぜ、node_modulesとpackage.jsonファイルを共有したいのですか?

個別のプロジェクトごとに分けてください。また、プロジェクトを共有する必要がある場合は、node_modulesフォルダを共有する代わりにpackage.jsonを共有することもできます。

また、名前を列挙してパッケージを手動でインストールする場合、-g(グローバル)フラグを使用できますが、npm installだけを使用すると、パッケージはグローバルパッケージとしてインストールされません。

+1

私はnode_modulesフォルダを共有して、すべてのプロジェクトでこのフォルダを持たないようにしてください。私が様々なプロジェクトに同じpackage.jsonを入れてnpmを実行すると、すべてのプロジェクトに同じnode_modulesがインストールされますか? – bigskull

+1

すべてのプロジェクトでnpm installを実行し、すべてのプロジェクトで同じnode_modulesを実行するとします。 しかし、新しいもののテストを開始するかのように、プロジェクトごとに別々のnode_modulesがあるはずです。すべてのプロジェクトに対して別々のpackage.jsonを維持する必要があります。そしてそれは倫理的な方法です –

+1

もっと良い方法は、それぞれのプロジェクトに対してpackage.jsonを保持し、同じnode_modulesフォルダを生成する場合でも各フォルダにnpm installを起動することです。これは正しいですか? – bigskull

1

私が小規模な/学習/テストプロジェクトのためにこれを回る方法は、(私はそれを "git projects"と呼んでいます)。基本的には、gitを使ってさまざまなプロジェクトを管理し、私が作業したいプロジェクトを「ロード」します。もちろん、複数のプロジェクトに同時にアクセスしたい場合は、この方法は機能しません。

私はこの目的のためにgitクライアントを使用したいのは、既存の「プロジェクト」を視覚化する方が簡単だからです。

だから私のワークフローがこれです...

  1. は私のメイン/ベース・フォルダを作成します。これには、git repo、単一のnode_modulesフォルダ、およびすべてのプロジェクトに共通するその他のものが含まれます。
  2. 基本的なpackage.jsonファイル(npm initを使用)を作成します。説明も、何もない、基本的なスケルトンpackage.jsonファイル。(ただし、すべてのプロジェクトで特定のパッケージを使用することがわかっている場合は、最初にインストールすることができますので、package.jsonに "base"モジュールとして追加されます)
  3. これで、 .jsonをリポジトリに追加することができます(そして、すべてのプロジェクトに含めることができますが、通常はpackage.jsonファイルです)。これはすべてのプロジェクトの裸骨出発ブランチになります。
  4. これがチェックインされると、私はgit repoでこれの分岐を作成します。これは「プロジェクト1」になります。しかし、あなたが望むだけであなたのプロジェクトを構築し、モジュールをインストールしたり、変更をチェックインしたりしてください。
  5. 私は新しいプロジェクトを始めたいとき、最初のベアボーンプロジェクトをチェックアウトしますほとんど空のpackage.jsonファイル)、別のブランチを作成します。これは私の2番目のプロジェクトです。

などなど...

だから、主なものは、すべての新しい「プロジェクトは」gitのレポで新しいブランチになり、新しいプロジェクトを作成するには、単に元に戻すということですベアボーン1つの新しいブランチをオフにします。

もちろん、プロジェクト内にブランチを作成することもできます。命名規則に関するすべてです。たとえば、新しいプロジェクトブランチの先頭に "P_"や "PROJECT_"などの接頭辞を付けることで、gitクライアントでどのブランチがプロジェクトであるかをすぐに知ることができます。もちろん、既存のプロジェクト内に新しいブランチが必要な場合は、別の命名方式を使用します。それは基本的にどのように私はそれについて行く。

このワークフローが気に入らないかもしれませんが、この方法ではパッケージをグローバルにインストールする必要はありません。バックアップを取ると、node_modulesという単一の(おそらく巨大な)フォルダを単に削除することができます。すべてのプロジェクトに関連するモジュールは、特定のプロジェクトのブランチをチェックアウトし、package.jsonで "npm install"を実行するだけで再インストールできます。それが理にかなってほしい。

関連する問題