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