問題タブ [lerna]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - lerna + webpack + babel-loader の問題
問題が再現される場所は次のとおりです。
https://github.com/reggi/webpack-lerna-babel-loader-issue
目標: ./packages/usage/index.js
webpack でビルドしようとしています。
- 私は4つのパッケージを持っています
alpha
,beta
,gamma
,usage
. alpha
、beta
、gamma
はbabelを使用していないため、index.jsを使用して消費する必要がありますusage
バベルを使用しており、次を使用して変換する必要がありbabel-loader
ます。その後、トラバーサルを続行する必要があります
私が試してコンパイルするbabel
と、奇妙に他の依存関係が要求されます。
そして{ exclude: /(node_modules|bower_components)/ }
有効にすると、これが得られます。
バンドルの種類
babel-loader
除外せずにnode_modules
モジュール \"@reggi/beta\" が見つかりません
除外babel-loader
ありnode_modules
モジュール \"/Users/thomasreggi/Desktop/webpack-issue/packages/beta\" が見つかりません
&なしbabel-loader
でコードを切り替えるrequire
すべてを完全に含みます。
npm - モノリシック リポジトリと複数の node_modules フォルダー
モノリシック リポジトリを使用するプロジェクトがあります。各パッケージには、そのパッケージの依存関係を管理するための独自の package.json ファイルがあります。lerna
monorepo アプリのすべての「サブパッケージ」にパッケージをインストールするために使用しています。
現在のプロジェクト構造は次のようになります
ルート node_modules フォルダーで一般的な依存関係を一般化する方法を検討しているため、各パッケージは実行時にノード パッケージの独自のコピーをプルせずlerna exec -- npm install
、代わりにモノリシック リポジトリのルートにあるものを使用して、インストールを回避します。複数のレポで同じパッケージを使用するため、プロジェクトのサイズが縮小されます。
プロジェクト間にいくつかのシンボリックリンクを作成することを含むいくつかの解決策を見てきましたが、シンボリックリンクのサポートは非常にOSの意見であるため、それは正確な科学ではないようです。また、これはサポートされている方法ではないようです。
現在、私たちはまだ始まったばかりで、lerna exec -- npm install
プロジェクトを実行した後、ディスク上にすでに約 350MB あり、npm からすべてをプルするのに最初は約 5 分かかります。プロジェクトは時間の経過とともに成長するため、この時間も時間の経過とともに延長されます...
したがって、すべてを再開するために、リポジトリのルートにある node_modules フォルダーで共通の依存関係を抽出し、サブパッケージが毎回独自のコピーを取得するのではなく、このフォルダーから共通の依存関係をプルするようにする方法を探しています。
git - monorepo のモジュール間でコミット メッセージを分離する
次のようなフルスタック プロジェクトがあります。
myProjectCommon
内部依存関係として使用できるように、Lerna を使用します。
モノレポを行うことにした場合、次のようにします。
これに関して私が目にする大きな問題は、すべてのパッケージのコミット履歴を一緒に混ぜてしまうことです。
この構成ですか、特定のパッケージのコミット履歴を確認できるツールはありますか?
または、パッケージごとに個別のリポジトリを作成し、次のように git サブモジュールとして使用するのが最適なソリューションです。
lerna - 公開されていないパッケージで Lerna を使用する
Lerna で monorepo をセットアップしようとしています。計画は、独自のパッケージにする必要があるコードのチャンクを引き出すことによって、既存のプロジェクトをリファクタリングすることです。を実行しましたがlerna init
、現在のセットアップは次のようになります。
私の理解ではlerna bootstrap
、この時点package1
で はプロジェクト内に配置され、それを にシンボリック リンクするはずprior-existing-project
です/node_modules/new-refactored-package/
。lerna の readmeから:
現在の Lerna リポジトリでパッケージをブートストラップします。すべての依存関係をインストールし、相互依存関係をリンクします。
このコマンドを実行すると、次のようになります。
- npm は、各パッケージのすべての外部依存関係をインストールします。
- 相互に依存関係にあるすべての Lerna パッケージを一緒にシンボリック リンクします。
- npm は、ブートストラップされたすべてのパッケージを事前公開します。
ただし、実行すると、lerna は代わりにnpm install new-refactored-package
次のことを試みます。
npm エラー! 404 レジストリは、https: //registry.npmjs.org/new-refactored-package での GET に対して 404 を返しました
私は誤解していますか?最初に依存パッケージを に公開する必要がありますnpm
か?