Hi Eduard,

AFAIK, Vincent is actively working on a fix that will allow to fix this and
support more URL mappings.
You should see with him about his work in progress.
Regards,

On Fri, Apr 3, 2015 at 6:38 PM, Eduard Moraru <[email protected]> wrote:

> Hi,
>
> Currently, the webjars URL mapping is the following:
>
> http://localhost:8080/xwiki/bin/webjars/resources/path?value=
> <id>%2F<version>%2F<filePath>
>
> Example:
> $services.webjars.url('codemirror', 'lib/codemirror.js')
> returns
>
> http://localhost:8080/xwiki/bin/webjars/resources/path?value=codemirror%2F5.1/lib/codemirror.js
>
> The problem with this is that require modules that use relative paths for
> their dependencies are broken because of the URL mapping we use, more
> specifically by the "?" character inside the URL we use.
>
> A concrete example is the CodeMirror webjar that defines its own modules
> which express their dependencies relatively: "../../lib/codemirror"
>
> Here we have a problem, since if we directly depend on
> "$services.webjars.url('codemirror', 'mode/css/css.js')", the module will
> fail to find its relatively defined dependency.
>
> One approach would be to define paths, so that requirejs can work its
> magic:
>
> require.config({
>   paths: {
>     cm : "
>
> http://localhost:8080/xwiki/bin/webjars/resources/path?value=codemirror%2F5.1
> "
>   }
> });
>
> require(["cm/lib/codemirror", "cm/mode/css/css"], function (CodeMirror) {
>   console.log(CodeMirror);
> });
>
> This properly finds "/lib/codemirror.js" and "mode/css/css.js" that we
> explicitly request, however, the internal dependency of css.js fails to be
> found at the resolved URL "
>
> http://localhost:8080/xwiki/bin/webjars/resources/path?value=codemirror%2F5.1/lib/codemirror
> ".
>
> Requirejs does not add the ".js" extension to the resolved path because the
> resolved path contains a "?" character so it is considered an absolute URL,
> not a relative path.
>
> The proposal is to stop using this URL mapping, since it is awkward to have
> paths in parameters and, instead, use a more intuitive one that is both
> good for clients and for requirejs.
>
> The proposed mapping/scheme is:
>
> http://localhost:8080/xwiki/bin/webjars/<id>/<version>/<filePath>
>
> Any additional parameters that we might need for the webjars action would
> be appended at the end. There is currently 1 case that I know of, which is
> "evaluate=true|false".
>
> Without this change, I can not find any solution to using a webjar such as
> CodeMirror that uses relative defined modules.
>
> Thanks,
> Eduard
>
> P.S.: Any additional advice on using requirejs to circumvent this
> limitation is most than welcomed.
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Denis Gervalle
SOFTEC sa - CEO
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to