24

Lerna で monorepo をセットアップしようとしています。計画は、独自のパッケージにする必要があるコードのチャンクを引き出すことによって、既存のプロジェクトをリファクタリングすることです。を実行しましたがlerna init、現在のセットアップは次のようになります。

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 の readmeから:

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

このコマンドを実行すると、次のようになります。

  • npm は、各パッケージのすべての外部依存関係をインストールします。
  • 相互に依存関係にあるすべての Lerna パッケージを一緒にシンボリック リンクします。
  • npm は、ブートストラップされたすべてのパッケージを事前公開します。

ただし、実行すると、lerna は代わりにnpm install new-refactored-package次のことを試みます。

npm エラー! 404 レジストリは、https: //registry.npmjs.org/new-refactored-package での GET に対して 404 を返しました

私は誤解していますか?最初に依存パッケージを に公開する必要がありますnpmか?

4

5 に答える 5

7

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
}
于 2017-07-20T10:00:54.640 に答える
-2

package.json のパッケージ名は、/packages フォルダーのフォルダー名と一致する必要があります。

(本質的に@kp_pingが言ったこと)

于 2018-07-20T09:27:51.683 に答える