22

Monorepo 内には、node_modules 内のすべての依存関係が必要なパッケージが 1 つあります。

しかし、私が何をしても、node_modules は空のままです。

したがって、私の質問の目的のために、次の設定で問題を再現できました

/
 package.json
 lerna.json
 node_modules
 packages/
          A/
            node_modules
            package.json
            index.ts
          B/
            node_modules
            package.json
            index.ts

このためのレポを作成しました!

メインパッケージ.json

{
  "name": "A-B-test",
  "private": true,
  "workspaces": {
    "packages": ["packages/*"],
    "nohoist": [ "**/B" ]
  },
  ...
  "devDependencies": {
    "lerna": "^3.13.4"
  }
}

B/package.jsonのように見える

{
  "name": "@scaljeri/B",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "angular": "^1.7.8"
  },
  "devDependencies": {
    "browserify": "^16.2.3",
    "typescript": "^3.5.2"
  }
}

プロジェクトのルートで実行するyarnと、すべての依存関係がルートにインストールされnode_modulesます。

糸のバージョン: 1.16.0 ノード: 12.4.0

問題の可能性がある提案はありますか?

4

4 に答える 4

31

私の経験では、次の方法で各パッケージを二重に指定する必要がありました。

{
  "nohoist": [
    "**/B",
    "**/B/**",
    "**/C",
    "**/C/**"
  ]
}

node_modulesさらに、設定を変更した後、既存のフォルダーをすべて削除する必要があることがわかりましたnohoist。したがって、プロジェクトが にあり、プロジェクト ディレクトリにいる場合は、次のようにこれらのフォルダーをpackagesすべて削除できます。node_modules

# delete node_modules on linux
rm -rf ./packages/*/node_modules
rm -rf ./node_modules

# install again
yarn install --check-files
于 2019-12-13T19:52:22.987 に答える