[解決済み] node.jsのアプリ間でコードを共有するには?
質問
私はnodeでいくつかのアプリを持っており、それらはすべて私が書いたいくつかのモジュールを共有しています。これらのモジュールは npm を介して利用可能ではありません。 私はアプリ間で自由に共有できるようにしたいのですが、ディレクトリをコピーしたり、そのためにGitに頼ったりしたくありません。 また、これを行うためにシンボリックリンクを使用することもあまり好きではありません。
こんな感じでディレクトリを配置したいと思います。
app1
server.js
node_modules
(public modules from npm needed for app1)
lib
(my own modules specific to app1)
app2
server.js
node_modules
(public modules from npm needed for app2)
lib
(my own modules specific to app2)
shared_lib
(my own modules that are used in both app1 and app2)
私が見ている問題は、shared_lib のモジュールが、実行中のアプリの node_modules ディレクトリにあるモジュールをどこで見つけるか、混乱しているように見えることです。 少なくとも、私はそれが問題だと考えています。
ファイルの重複を避けるために、これを行う良い方法は何ですか? (それらは私のコードではないので、node_modules内のものの重複を気にしないことに注意してください、私はそれらをGitにチェックしない、など)
どのように解決するのですか?
私は、これを node_modules フォルダを持つことで機能しています。
node_modules の中にモジュールを入れるために npm に公開する必要はないことに注意してください - ただ使えばいいのです。
"private": true
各プライベート パッケージ.json ファイル - あなたのプロジェクトの場合、私は次のようになります。
app1
server.js
node_modules
(public modules from npm needed for app1)
(private modules locally needed for app1)
app2
server.js
node_modules
(public modules from npm needed for app2)
(private modules locally needed for app2)
node_modules
(public modules from npm needed for app1 & app2)
(private modules locally for app1 & app2)
ポイントは、node.jsにはすでにこれを扱うためのメカニズムがあり、それは素晴らしいものだということです。 NPMにないプライベートなもの」というトリックと組み合わせれば、うまくいきます。
要するにa。
require('somemodule')
アプリ A またはアプリ B からは、モジュールが下層にあるか上層にあるかに関係なく、モジュールを見つけるまで上方にカスケード接続されます。 確かに、これなら require(...) ステートメントを変更することなく、場所をホットスワップすることができます。
関連
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リソースの読み込みに失敗しました: net::ERR_CONNECTION_REFUSED : Nodejs
-
[解決済み] テスト
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] AWS lambda function error - Unable to import module 'index': エラー
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。
-
[解決済み] 自分のレジストリなしでプライベートNPMモジュールをインストールする方法は?