FormidableLabs / builder

An npm-based task runner
https://github.com/FormidableLabs/builder
MIT License
319 stars 26 forks source link

Bug: Recursive dependencies. #74

Open ryan-roemer opened 8 years ago

ryan-roemer commented 8 years ago

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:

/cc @coopy @chaseadamsio

exogen commented 8 years ago

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.

curiouslychase commented 8 years ago

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.