Instead of debug, can't you just search for "require(" in all js files in the subfolders of a-1.0.0/? It's a solution that might not be resilient to new versions of "a", but it is a solution.
I think I'm right in saying that none of this would be necessary if we could just drop the whole folder, eg. a-1.0.0/, into META-INF/modules/ and shim the top level, eg. "a" = "a-1.0.0/a.js", Then all of its "require" operations would work. So, does anyone know a way to shim items that are inside META-INF/modules/? On 25 Mar 2015, at 12:12 pm, Rural Hunter <ruralhun...@gmail.com> wrote: > Yes I can do that. But I think it's too much and I need to debug the > requests to find all those dependencies. This can be a workaround but > doesn't look like a neat solution. Is it possible to make this happen > automatically by Tapestry itself? > > 2015-03-24 20:05 GMT+08:00 Geoff Callender < > geoff.callender.jumpst...@gmail.com>: > >> if you look at the Network view in Chrome's Web Inspector I think you'll >> find it's trying to GET these: >> >> /yourapp/modules.gz/dep/canvas.js >> /yourapp/modules.gz/tool/util.js >> /yourapp/modules.gz/tool/log.js >> /yourapp/modules.gz/tool/guid.js >> >> It's hoping to find them in META-INF/modules/ but they're not there. The >> solution is to make it look like they're there by shimming them all! For >> example: >> >> public static void contributeModuleManager( >> MappedConfiguration<String, Object> configuration, >> @Path("/META-INF/assets/a-1.0.0/a.js") Resource a, >> @Path("/META-INF/assets/a-1.0.0/dep/canvas.js") >> Resource depCanvas, >> @Path("/META-INF/assets/a-1.0.0/tool/util.js") >> Resource toolUtil, >> ...) >> >> configuration.add("a", new JavaScriptModuleConfiguration(a)); >> configuration.add("dep/canvas", new >> JavaScriptModuleConfiguration(depCanvas)); >> configuration.add("tool/util", new >> JavaScriptModuleConfiguration(toolUtil)); >> ... >> } >> >> Cheers, >> >> Geoff >> >> On 24 Mar 2015, at 3:59 pm, Geoff Callender < >> geoff.callender.jumpst...@gmail.com> wrote: >> >>> Very good question. It's trying to lazy load from the local context. So >> far I've managed to sidestep modules that do that. I'll have a look into it. >>> >>> On 23 Mar 2015, at 5:56 pm, Rural Hunter <ruralhun...@gmail.com> wrote: >>> >>>> Hi Geoff, >>>> >>>> Thanks so much for the detailed guide. My module A is AMD-compliant and >> has >>>> no css files. I tried your solution in AppModule. It did resolved the >>>> problem for A.js itself. But the A.js depends on many files in it's sub >>>> directories. I checke the source of A.js and it's like this: >>>> require('./dep/excanvas'); >>>> var util = require('./tool/util'); >>>> var log = require('./tool/log'); >>>> var guid = require('./tool/guid'); >>>> >>>> I got 404 for all the access to those dependencies. How to solve this? >>>> >>>> >>>> 2015-03-23 10:56 GMT+08:00 Geoff Callender < >>>> geoff.callender.jumpst...@gmail.com>: >>>> >>>>> Let's say "a" and its associated files are in a folder called a-1.0.0. >> Try >>>>> dropping the folder into META-INF/assets and shim it by contributing to >>>>> ModuleManager: >>>>> >>>>> public static void contributeModuleManager( >>>>> MappedConfiguration<String, Object> >> configuration, >>>>> @Path("/META-INF/assets/a-1.0.0/a.js") Resource >> a, >>>>> ...) >>>>> >>>>> configuration.add("a", new >>>>> JavaScriptModuleConfiguration(a).dependsOn("whatever")); >>>>> ... >>>>> } >>>>> >>>>> Now you can refer to it as module "a". If a.js was already an >>>>> AMD-compliant module, that's fine, RequireJS will figure handle it. If >> a.js >>>>> already does *require("whatever")* then you can leave out the >>>>> .dependsOn("whatever") shown above. >>>>> >>>>> If it has css files, you might like to put them in a JavaScriptStack so >>>>> that their path is kept in one place. >>>>> >>>>> public class ASupportStack implements JavaScriptStack { >>>>> >>>>> private final AssetSource assetSource; >>>>> >>>>> public ASupportStack(final AssetSource assetSource) { >>>>> this.assetSource = assetSource; >>>>> } >>>>> >>>>> public String getInitialization() { >>>>> return null; >>>>> } >>>>> >>>>> public List<Asset> getJavaScriptLibraries() { >>>>> List<Asset> ret = new ArrayList<>(); >>>>> return ret; >>>>> } >>>>> >>>>> public List<StylesheetLink> getStylesheets() { >>>>> List<StylesheetLink> ret = new ArrayList<>(); >>>>> >>>>> ret.add(new StylesheetLink(assetSource >>>>> >>>>> .getClasspathAsset("/META-INF/assets/a-1.0.0/a.css"))); >>>>> ret.add(new StylesheetLink(assetSource >>>>> >>>>> .getClasspathAsset("/META-INF/assets/a-1.0.0/a.print.css"), >>>>> new StylesheetOptions("print"))); >>>>> >>>>> return ret; >>>>> } >>>>> >>>>> public List<String> getStacks() { >>>>> return Collections.emptyList(); >>>>> } >>>>> >>>>> @Override >>>>> public List<String> getModules() { >>>>> return Collections.emptyList(); >>>>> } >>>>> >>>>> } >>>>> >>>>> In AppModule: >>>>> >>>>> public static void >>>>> contributeJavaScriptStackSource(MappedConfiguration<String, >>>>> JavaScriptStack> configuration) { >>>>> configuration.addInstance("ASupportStack", >>>>> ASupportStack.class); >>>>> } >>>>> >>>>> In each page or component that uses module "a", either @Import the >>>>> stylesheets or @Import the JavaScriptStack. I wish there was a way that >>>>> would import it for you every time refer to module "a" but I don't >> know of >>>>> one. >>>>> >>>>> I hope this is helping. >>>>> >>>>> Geoff >>>>> >>>>> On 23 Mar 2015, at 1:06 pm, Rural Hunter <ruralhun...@gmail.com> >> wrote: >>>>> >>>>>> I already did that. The problem is this: I have a 3rd party module A. >>>>> Both >>>>>> my own code and another 3rd party module B depend on it. The standard >>>>>> location of module A should be at classpath:META-INF/modules/ but it >>>>> brings >>>>>> in a lot of js files and sub-folders and makes the module root path( >>>>>> classpath:META-INF/modules) a bit messy. So I want to put module A at >>>>>> classpath:META-INF/modules/A. How can I achieve it? >>>>>> >>>>>> 2015-03-22 18:39 GMT+08:00 Chris Poulsen <mailingl...@nesluop.dk>: >>>>>> >>>>>>> Drop the 3rd party module in the usual place for modules >>>>>>> (classpath:META-INF/modules) and reference it. >>>>>>> >>>>>>> http://tapestry.apache.org/javascript-rewrite.html has some info on >> the >>>>>>> infrastructure and the tapestry source code (setup of the core >>>>>>> stack/bootstrap modules etc. are good inspiration as well), >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Sat, Mar 21, 2015 at 4:19 PM, Rural Hunter <ruralhun...@gmail.com >>> >>>>>>> wrote: >>>>>>> >>>>>>>> How to work out if I want to config the path of a third-party module >>>>> if I >>>>>>>> use js stack? >>>>>>>> >>>>>>>> 2015-03-20 17:07 GMT+08:00 Chris Poulsen <mailingl...@nesluop.dk>: >>>>>>>> >>>>>>>>> In a javascript stack? >>>>>>>>> >>>>>>>>> On Fri, Mar 20, 2015 at 4:05 AM, Rural Hunter < >> ruralhun...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> I'm testing tapestry 5.4. I'm wondering where to put the >>>>>>>> requirejs.config >>>>>>>>>> code for my own modules and third-party modules? >>>>>>>>>> >>>>>>>>>> >> --------------------------------------------------------------------- >>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>>>>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>>> >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org