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 > >