This latest email is a really good explanation of how things work. Do we have this captured in a wiki page?
Peter On Sep 19, 2016, at 11:51 AM, Alex Harui <aha...@adobe.com<mailto:aha...@adobe.com>> wrote: On 9/19/16, 12:09 AM, "lizhi" <s...@qq.com<mailto:s...@qq.com>> wrote: and my code not the same as createjs. my code is baseon "flash api",so need remove-circulars. IMO, if your code is a library that is eventually compiled into an application via MXMLC, then you only need -remove-circulars when MXMLC is run. That's because the remove-circulars needs to understand the dependency order. For example if you have: Class A { Var foo:B; } Class B { Var bar:A; } That is a circularity, but you can't remove the goog.requires("B") from A.js, nor can you remove the goog.requires("A") from B.js until you compile these into an app. Otherwise you would remove both and then B wouldn't load or A wouldn't load depending on which one got loaded first. Now if you are concatenating all files, you should be able to remove all goog.requires as long as you have concatenated in static dependency order. But otherwise, MXMLC will see that your customer's app used A directly as in: Class Main { Var a:A; } And then -remove-circulars will remove the goog.requires("A") from B.js since it knows that main.js will have a goog.requires("A"). -Alex