Update: I'm making progress on this, and it looks like it will work, but there is one thing I don't like about it, which is that it means that the JS files in the SWCs won't be usable as-is in Google Closure. They will always have to be processed by FalconJX so their non-prototype dependencies can be moved to the main JS files and we have to suppress the missingRequire warning.
That sort of punishes anyone who really does have a code base that is clean of circular dependencies, which is sort of a bad thing. Folks who want to write clean code should be rewarded by errors and warnings that their code isn't clean. So, I'm now thinking that I will rework the implementation yet again to have the JS files keep their goog.requires. Then, if you turn on -remove-circulars, we'll modify the JS files in bin/js-debug in a way that will indicate they've been modified. Let me know if you have any thoughts on it. -Alex On 3/18/17, 9:35 PM, "Alex Harui" <aha...@adobe.com> wrote: > > >On 3/18/17, 9:56 AM, "Harbs" <harbs.li...@gmail.com> wrote: > >>In principle that sounds good, but what will make sure that all the >>necessary files are loaded? >> >>Also, will that effect the google compiler being able to optimize the >>code? >> >>Ah. I think I understand. You’ll still output the requires in the main >>app, but you’ll build the list from js tags in the files. That way there >>will be no need to ever modify the original js files. Correct? > >Yes, that's the plan. In theory we only need to modify the main.js file. >Right now we read and write almost every file. > >-Alex > >> >>Harbs >> >>> On Mar 18, 2017, at 4:22 PM, Alex Harui <aha...@adobe.com> wrote: >>> >>> That said, I'm now planning to try to change the compiler output to >>>only >>> emit goog.requires for prototype dependencies and uses a special jsdoc >>>tag >>> in place of all of the other goog.requires we currently output. That >>> might make compiles even faster because we won't have to muck with the >>> list of requires on each compile. >> >