Create-react-app: Cannot use CRA to create a new yarn workspace/package

Created on 4 Nov 2017  路  6Comments  路  Source: facebook/create-react-app

Is this a bug report?

Yes

Can you also reproduce the problem with npm 4.x?

No

Which terms did you search for in User Guide?

  • "Yarn workspaces"
  • "hoisting"

Environment

  1. node -v: v8.7.0
  2. npm -v: 5.5.1
  3. yarn --version (if you use Yarn): 1.2.1
  4. npm ls react-scripts (if you haven鈥檛 ejected): N/A (happens on init)

Then, specify:

  1. Operating system: macOS Sierra v10.12.6
  2. Browser and version (if relevant):

Steps to Reproduce

(Write your steps here:)

  1. mkdir cra-issue && cd cra-issue
  2. create a package.json using this:
    { "private": true, "workspaces": [ "packages/*" ], "devDependencies": { "husky": "^0.14.3" } }
  3. yarn
  4. create-react-app packages/app-a

Expected Behavior

A new CRA application to be initialized under packages/app-a

Actual Behavior

...
Aborting installation.
  Unexpected error. Please report it as a bug:
  { Error: Cannot find module '/Users/cra/Projects/sandbox/repro/packages/workspace-a/node_modules/react-scripts/package.json'
      at Function.Module._resolveFilename (module.js:527:15)
      at Function.Module._load (module.js:476:23)
      at Module.require (module.js:568:17)
      at require (internal/module.js:11:18)
      at checkNodeVersion (/Users/cra/.config/yarn/global/node_modules/create-react-app/createReactApp.js:488:23)
      at getPackageName.then.then.then.packageName (/Users/cra/.config/yarn/global/node_modules/create-react-app/createReactApp.js:295:7)
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7) code: 'MODULE_NOT_FOUND' }

  Deleting generated file... node_modules
  Deleting generated file... package.json
  Deleting workspace-a / from /Users/cra/Projects/sandbox/repro/packages
  Done.

Reproducible Demo

Use steps above

bug

All 6 comments

Yea, we should really figure out a Workspaces integration. Also as a solution to the "absolute imports" problem.

@gaearon I tried to use require.resolve within the current path.resolve but couldn't get it working... granted I only had a couple of minutes to try, so I may not have used it right... feels like it should be an easy fix though - to get the script to use node's require resolution algorithm.

PS. Thanks for the quick reply! 馃殌

In case anyone is stuck with this and until the different issues are fixed, I made a little guide on how to use yarn workspaces with Create React App and Create React Native App (Expo) to share common code across. Hope you find it handy! https://learn.viewsdx.com/how-to-use-yarn-workspaces-with-create-react-app-and-create-react-native-app-expo-to-share-common-ea27bc4bad62~~ https://medium.com/viewsdx/how-to-use-yarn-workspaces-with-create-react-app-and-create-react-native-app-expo-to-share-common-ea27bc4bad62

@dariocravero - thats the workaround I've gone with, creating in a tmp location and copying into the yarn workspaces structure. In addition to removing node_modules, you may want to also remove yarn.lock as I believe with workspaces all package locks are managed in the top-level lockfile? I could be mistaken though, I came to this conclusion when running yarn outdated in the repo root and having outdated dependencies inside nested packages appearing in the output. @gaearon - does that sound right?

That's a good point @mattfysh, thanks! Updated the guide :)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

alleroux picture alleroux  路  3Comments

adrice727 picture adrice727  路  3Comments

fson picture fson  路  3Comments

stopachka picture stopachka  路  3Comments

fson picture fson  路  3Comments