2017-06-12 14 views
4

私はLernaで私のモノレポを設定しようとしています。計画は、独自のパッケージでなければならないコードの断片を引き出すことによって、既存のプロジェクトをリファクタリングすることです。私はlerna initを実行した、と私の現在の設定は次のようになります。未公開のパッケージでLernaを使用する

project/ 
    packages/ 
    new-refactored-package/ 
     package.json 
    prior-existing-project/ 
     package.json 
     { "dependencies" : { "new-refactored-package" : "latest" } } 
    package.json 
    { 
     "devDependencies": { 
     "lerna": "^2.0.0-rc.5" 
     } 
    } 
    lerna.json 
    { 
     "lerna": "2.0.0-rc.5", 
     "packages": [ 
     "packages/*" 
     ], 
     "version": "0.0.0" 
    } 

私の理解では、この時点ではlerna bootstrapがプロジェクトにpackage1を見つけ、prior-existing-project/node_modules/new-refactored-package/にそれをシンボリックリンクになっているということでした。 lerna's readme

現在のLernaリポジトリにパッケージをブートストラップします。すべての依存関係をインストールし、相互依存関係をリンクします。

実行すると、このコマンドはします:

  • NPMは、各パッケージのすべての外部依存関係をインストールします。
  • Symlinkは、相互に依存するすべてのLernaパッケージを一緒にリンクします。
  • npmすべてのブートストラップされたパッケージを公開します。私はそれを実行したときに

しかし、レルナはnpm install new-refactored-packageに代わりにしようとします。

NPMのERR! 404レジストリはGETのために404を返すhttps://registry.npmjs.org/new-refactored-package

私は誤解していますか?まず、依存パッケージをnpmに公開する必要がありますか?それらが利用可能ある場合

+0

です!ドキュメンテーションは、未公開のパッケージやリンクについては誤解を招きます。誰かが私たちを助けてくれることを願っています。 –

答えて

2

lerna bootstrapは、パッケージのシンボリックリンクの代わりにインストールされます。

あなたの場合、lernaはパッケージの正しいversionまたはnameを見つけることができません。ここで

は私も同じ問題を抱えている...私は私のプロジェクトで何をしたか

project 
- packages/ 
    - a_pkg 
     - package.json { 
      "name": "@scope/a_pkg", 
      "version": "0.0.1", 
      "private": true 
      /// opt out 
     } 
    - b_pkg 
     - package.json { 
      "name": "@scope/b_pkg", 
      "version": "0.0.1", 
      "private": true, 
      "dependencies": { 
       "@scope/a_pkg": "^0" 
      }, 
      /// opt out 
     } 
- package.json 
- lerna.json { 
    "packages": [ 
     "packages/*" 
    ], 
    /// opt out 
} 
関連する問題