command not found: react-scripts (PS: yarn2(berry) workspaces)
Asked Answered
M

1

0

Working on a yarn2 powered monorepo with two workspaces common and app. I've declared typescript and react-scripts as devDependencies in root's package.json ; and declared typescript and react-scripts as peerDependencies in app's package.json.

However, running yarn start gives the error

command not found: react-scripts

Any idea how to go about this?

Sidenote

react-scripts has peerDependencies on react which I've provided in root workspace's dependency section.

attaching package.json for root:

{
  "name": "monorepo",
  "packageManager": "[email protected]",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.16.4",
    "@testing-library/react": "^13.3.0",
    "@testing-library/user-event": "^13.5.0",
    "@types/jest": "^27.5.2",
    "@types/node": "^16.11.43",
    "@types/react": "^18.0.15",
    "@types/react-dom": "^18.0.6",
    "fictoan-react": "^0.41.22",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "styled-components": "^5.3.5",
    "web-vitals": "^2.1.4"
  },
  "devDependencies": {
    "react-scripts": "5.0.1",
    "typescript": "^4.7.4"
  },
  "workspaces": [
    "common",
    "app"
  ]
}

package.json for app

{
  "name": "app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "dependencies": {
    "common": "workspace:*"
  },
  "peerDependencies": {
    "@testing-library/jest-dom": "*",
    "@testing-library/react": "*",
    "@testing-library/user-event": "*",
    "@types/jest": "*",
    "@types/node": "*",
    "@types/react": "*",
    "@types/react-dom": "*",
    "fictoan-react": "*",
    "react": "*",
    "react-dom": "*",
    "react-scripts": "*",
    "styled-components": "*",
    "web-vitals": "*"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

Meuser answered 13/7, 2022 at 14:0 Comment(0)
M
0

Not sure if this is a hack, but solved this using https://yarnpkg.com/getting-started/qa#how-to-share-scripts-between-workspaces

added this to root's package.json

 "scripts": {
    "g:start": "cd $INIT_CWD && react-scripts start",
    "g:build": "cd $INIT_CWD && react-scripts build",
    "g:test": "cd $INIT_CWD && react-scripts test",
    "g:eject": "cd $INIT_CWD && react-scripts eject"
  }

updated this in app's package.json

 "scripts": {
    "start": "yarn g:start",
    "build": "yarn g:build",
    "test": "yarn g:test",
    "eject": "yarn g:eject"
  }

PS:not really sure why react-scripts isn't available in app workspace even though its specified as a peerDependency :/

Meuser answered 13/7, 2022 at 15:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.