Hi Sebastien, Looks like JSPM/SystemJS can do all the things I was looking for. Have to spend some time to read more about time.
Anyway, thanks for your help and feedback. On Sun, Aug 2, 2015 at 10:38 PM Sébastien Cevey <seb.ce...@guardian.co.uk> wrote: > On Fri, 31 Jul 2015 at 11:50 Behrang Saeedzadeh <behran...@gmail.com> > wrote: > > Hello Behrang, > > JSPM and SystemJS, IMHO, are not as elegant as the way Maven (Java) or >> Bundler (Ruby) can manage dependencies. >> > > I am not contesting that, but it's worth describing what qualities of > Maven you're asking for. > > >> Group ID: com.google.guava >> <http://mvnrepository.com/artifact/com.google.guava> >> Artifact ID: guava >> <http://mvnrepository.com/artifact/com.google.guava/guava> >> Version: 18.0 >> <http://mvnrepository.com/artifact/com.google.guava/guava/18.0> >> >> The short form notation is com.google.guava:guava:18.0. >> > > With JSPM, package descriptors are of the form: > > github:theefer/theseus@0.5.0 > npm:theseus@0.5.0 > etc. > > The descriptor contains the registry resolver (e.g. github, npm, or any > custom one). The package name can contain namespacing, as in the github > example, if the registry supports it. The version is explicited and > supports semver. > > Guava itself might depend on other dependencies, but you don't have to >> explicitly require them in your project. As long as you specify you require >> com.google.guava:guava:18.0, >> all its dependencies are added to your project automatically. >> > > JSPM/SystemJS also resolve, install and automatically import a package's > dependencies automatically. > > >> Most open source libraries are available in the Maven Central repository >> which is enabled by default. Users can additionally specify other >> repositories that Maven should query in order to find libraries with >> specific coordinates. >> > > This is similar to what registries give you in JSPM. > > >> In SystemJS, baseURL looks similar to the notion of a Maven repository, >> but it is not as elegant: you can't have multiple baseURLs (if I am not >> wrong) >> > > I'm not sure what you mean by that. If you're talking about your example > where you have a list of registries and fallback to the next if a package > isn't found in one, that seems rather like an anti-pattern on the web (esp > if these are going to be calls from your browser). > > If it's just about not having to specify which repository contains a given > package, you're right, JSPM requires you to specify that, but it's really > not that much of a burden, and it also makes the resolution more > deterministic and robust given the variety of ways people package even the > same project to different repositories (e.g. AMD/CJS/UMD, build/sources, > etc). > > >> and dependencies are specified relative to the baseURL, not as absolute >> coordinates and not versioned. >> > > Not sure what you mean by that but everything *is* versioned in JSPM and > you can lock the entire dependency tree (something that's less common in > Maven AFAIK). > > Versions can be specified either at the top-level config, or even at the > import level, e.g.: > > System.import('npm:lodash@3.10.0').then(function(_) { > console.log(_.max([1, 2, 3, 4])); > }); > > >> The call to System.import('com.modernizr:modernizr:2.8.3') will first >> query cdn.w3c.org for com.modernizr:modernizr:2.8.3. If found, it will >> use that, if not it queries cdn.google.com and then cdn.example.com >> until it finds it or fails. >> > > You may be able to write a custom registry resolver that does something > like that, if you really think that's a good idea. > > >> Similarly the call to System.import('com.jquery:jquery-ui:1.11.4') will >> do the same thing, but as jquery-ui depends on jquery, it will also >> download that. >> > > That'd already be the case. > > >> One benefit of this compared to what is already out there is that at the >> moment if Site A uses CDN 1 for loading jQuery v1 and Site B uses CDN 2 for >> the same version of jQuery, the browser has to download both versions. But >> with this approach, as long as both sites depend on >> com.jquery:jquery-ui:1.11.4 >> it only has to be downloaded once. >> > > That's only true if they both happen to provide the list of repositories > in the same order. If not, they would each download jquery-ui from the > first in the list and hence download it twice. The only way to avoid that > would be to lookup if jquery-ui is in the browser cache for any of the > repositories in the list -- obviously this is not allowed by the browser > for security reasons. > > Best, > > PS: this discussion doesn't seem particularly relevant for es-discuss (?), > so if you want to reply it may be best to do so in private to me to avoid > unnecessary noise. > > ------------------------------ > Visit theguardian.com. On your mobile and tablet, download the Guardian > iPhone and Android apps theguardian.com/guardianapp and our tablet > editions theguardian.com/editions. Save up to 57% by subscribing to the > Guardian and Observer - choose the papers you want and get full digital > access. Visit subscribe.theguardian.com > > This e-mail and all attachments are confidential and may also be > privileged. If you are not the named recipient, please notify the sender > and delete the e-mail and all attachments immediately. Do not disclose the > contents to another person. You may not use the information for any > purpose, or store, or copy, it in any way. Guardian News & Media Limited > is not liable for any computer viruses or other material transmitted with > or as part of this e-mail. You should employ virus checking software. > > Guardian News & Media Limited is a member of Guardian Media Group plc. > Registered > Office: PO Box 68164, Kings Place, 90 York Way, London, N1P 2AP. Registered > in England Number 908396 > > > -- Best regards, Behrang Saeedzadeh
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss