-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Impacts Build performance negatively #264
Comments
Related issue: #159 |
Currently, it builds the whole app twice. Once for browser and once for Fastboot. This has many issues, the most obvious is developer ergonomics (doubling our build costs, isn't acceptable) the less obvious issues are different builds === different bugs, harder to debug etc.etc, another permutation here makes all future efforts that build on this also more complicated. The problem specifically is: Line 121 in bb8c4bf
The majority of the system is the same between both worlds. With the exception of some custom fastboot replacements/configuration. Current these faceboot replacements are very coupled to the app, but this does not need to be. If decoupled, we will most likely have simpler and more performance system. If instead we did the following:
Anything that prevents this from working, we should identify and come up with targeted solutions. For example. app/fastboot and having fastboot initializers mixed into app, unnecessarily complicates the build. Instead moving That pipeline for fast-boot stuff, could be something relatively simple: var Concat = require('broccoli-concat');
var Funnel = require('broccoli-funnel');
var Babel = require('broccoli-babel-transpiler');
var amdNameResolver = require('amd-name-resolver').moduleResolve;
var fastboot = new Funnel('fastboot');
var es5 = new Babel(fastboot, { // options extracted from how ember-cli does this
compileModules: true,
modules: 'amdStrict',
moduleIds: true,
resolveModuleSrouce: amdNameResolver
});
// likely other files and stuff
var fastboot = concat(es5, { outputFile: 'app-fastboot.js' }); I believe above could essentially replace the existing buildFastBootTree Objectives
Acceptance Criteria
Pre-Reqs
|
Its worth pointing out, I have little time to actually do ^ but I believe @kratiahuja and some other co-workers (whos GH names I don't know) are exploring this further. That being said, if all else fails I am available to help be a sounding board, or help unblock. |
@stefanpenner I'll work on this. |
I'm also interested in contributing to this |
@danmcclain I'll sync up with you next week once I have a prototype running by end of day today. We can create a PR with action items and start fixing this. We also need to fix the express server that fastboot creates. |
I did a spike of what Stef suggested on an app and it definitely shows reduced build times than on an app having The spiked app is here. Look at I am going to spend next week to come up with a plan such that ember-cli has a public API to allow additional pipelines during |
Synced up with Stef offline. I am going to do a spike of this in ember-cli and then open a PR with the list of things we need to address including the public API to expose. |
I am done with a spike in ember-cli and I have a list of things that we need to expose from ember-cli and things need to be fixed in ember-cli-fastboot to welcome "fastboot in ember-cli". I will open an issue tomorrow morning in ember-cli and here to describe the work task. Stay tuned! cc: @tomdale @danmcclain @arjansingh @stefanpenner @masonwan @ryanone |
Here is the issue with all details tracking in ember-cli. Please feel free to comment and give feedback. Once most of the folks agree on the ember-cli issue that this is the way to move forward, I will open an issue in this repo with the list of tasks that need to be done to using building fastboot with |
master (soon rc.1) should address this |
…anagement Add sandbox queue management when using buildSandboxPerVisit
This has been brought up in chat, but i can't seem to find an issue. If there is one, and I missed it feel free to close.
More concretely it appears this add-on at-least duplicates the build, causing ember-twiddle for example to for example browserify (and everything else) twice.
Specifically these area is one of the offenders:
The text was updated successfully, but these errors were encountered: