ef4 / ember-browserify

ember-cli addon for easily loading CommonJS packages from npm via browserify.
MIT License
172 stars 28 forks source link

postprocessTree never called when consumed by addon #34

Closed asakusuma closed 9 years ago

asakusuma commented 9 years ago

I suspect this is an ember-cli issue, but when an addon uses ember-browserify, the consuming application will throw this error:

$ ember build
version: 0.2.5
Build failed.
Path or pattern "browserify/browserify.js" did not match any files
Error: Path or pattern "browserify/browserify.js" did not match any files
    at Object.multiGlob (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-kitchen-sink-helpers/index.js:202:13)
    at Class.module.exports.CachingWriter.extend.addFiles (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/concat-with-maps.js:74:13)
    at Class.module.exports.CachingWriter.extend.updateCache (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/concat-with-maps.js:52:12)
    at /Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/index.js:92:34
    at lib$rsvp$$internal$$tryCatch (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:489:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:501:17)
    at lib$rsvp$$internal$$publish (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:472:11)
    at lib$rsvp$asap$$flush (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1290:9)
    at process._tickCallback (node.js:355:11)

This has something to do with the fact that postprocessTree is not called on ember-browserify, which is not a direct depedency of the app.

I reproduced this in a dummy app here: https://github.com/asakusuma/nested-ember-browserify

ef4 commented 9 years ago

Yes, this is a general ember-cli limitation. It needs better support for recursive addon hooks. Conceptually I think it could be made it work without any changes to ember-browserify.

asakusuma commented 9 years ago

Ok I tried propagating the hook calls in the addon down to ember-browserify: https://github.com/asakusuma/uses-ember-browserify/commit/0a5a20605036e26b8fa67528733ee28c4317cef1

I don't quite understand the new error because postprocessTree seems to be passing a valid tree. @stefanpenner got any workarounds for recursive hook calls?

$ ember build
version: 0.2.5
Build failed.
Cannot read property 'rebuild' of undefined
TypeError: Cannot read property 'rebuild' of undefined
    at Builder.wrapIfNecessary (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli/lib/builder.js:136:18)
    at readAndReturnNodeFor (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli/lib/builder.js:44:17)
    at /Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli/lib/builder.js:22:14
    at lib$rsvp$$internal$$tryCatch (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:489:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:501:17)
    at /Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1095:13
    at lib$rsvp$asap$$flush (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1290:9)
    at process._tickCallback (node.js:355:11)
stefanpenner commented 9 years ago

@stefanpenner got any workarounds for recursive hook calls?

nope

stefanpenner commented 9 years ago

@chadhietala's pre-packager work supports nested NPM imports correctly. https://github.com/chadhietala/ember-cli-pre-packager

The plan is for this eventually to part of ember-cli (once its complete)

asakusuma commented 9 years ago

Alright, I'll just bug @chadhietala to get it done faster haha

Closing, thanks guys

stefanpenner commented 9 years ago

Alright, I'll just bug @chadhietala to get it done faster haha

i suspect you know where to find him ;)