builder icon indicating copy to clipboard operation
builder copied to clipboard

Bug: Recursive dependencies.

Open ryan-roemer opened this issue 9 years ago • 2 comments
trafficstars

An easy footgun with the existing https://github.com/FormidableLabs/builder-react-component/blob/master/package.json is if in:

// ROOT
  "scripts": {
    "test": "builder run check"
  },

// ARCHETYPE
  "scripts": {
    "check": "builder run lint && builder run test"
  },

and then run:

$ npm test

and watch an infinite loop of the same task...

The lint command works just fine, but builder run test in the archetype hits the ROOT test task recursively firing up everything again, and again, and again, ...

TASK: Research a way to detect and deal with:

  • [ ] Maybe keep builder task spawn state in environment?
  • [ ] Refactor our archetypes to make npm:test really be something worth of npm test in ROOT and remove archetype test commands.
  • [ ] Detect and error in archetypes on npm lifecycle commands (?) (Orthogonal, but related -- can have recursive blow up with completely custom commands too.)
  • [ ] Update the README to not have test be an example of overriding commands.

/cc @coopy @chaseadamsio

ryan-roemer avatar Jan 14 '16 22:01 ryan-roemer

This is easy to do with plain old npm as well:

  "scripts": {
    "check": "npm run lint && npm run test",
    "lint": "echo OK",
    "test": "npm run check"
  }

...but perhaps a little easier with Builder since you're not looking at the full list of tasks when you edit package.json. I'm inclined to just add a word of caution to the docs instead of figuring out a technical solution.

exogen avatar Aug 27 '16 15:08 exogen

I'm inclined to just add a word of caution to the docs instead of figuring out a technical solution.

It might be interesting to come up with a tool that checks for these kinds of infinite loops in scripts that'd work for builder or npm.

curiouslychase avatar Aug 28 '16 02:08 curiouslychase