mercredi 4 février 2015

RequireJS: Random modules dependencies issues


I have a simple application with few modules and some dependencies (jQuery and its plugins).


Config:

main.js



requirejs.config({
paths: {
'jquery': '../vendor/jquery/dist/jquery',
'domReady': '../vendor/requirejs-domready/domReady',
'raty': '../vendor/raty/lib/jquery.raty'
},
shim: {
'raty': {
deps: ['jquery']
}
}
});


app/rating.js



"use strict";

define(['jquery', 'raty', 'domReady!'], function () {
$('.rating').raty();
});


RequireJS task in Gruntfile.js



requirejs: {
main: {
options: {
mainConfigFile: '<%= appDir %>/js/main.js',
appDir: '<%= appDir %>/js',
baseUrl: '.',
dir: '<%= buildDir %>/js',
optimize: "none",
modules: [
{
name: 'app/default',
include: ['jquery'],
exports: 'jQuery'
},
{
name: 'app/rating',
exclude: ['jquery', 'raty', 'domReady!']
}
]
}
}
},


HTML files



<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.15/require.min.js"></script>
<script>
requirejs.config({
baseUrl: '/assets-dist/js'
});

require(['main'], function () {
require(['app/default', 'app/rating']);
});
</script>


Problem Default module is being loaded correctly each time. I face an issue with rating module jQuery dependency. From time to time I got ReferenceError: jQuery is not defined error in jQuery Raty plugin.


I'm fighting with this for few hours, I've read tons of documentation, blog posts but I'm unable to find a misconfiguration myself.


Edit:

I noticed that stuff is working correctly when I add include: ['jquery', 'raty', 'domReady!'] to module configuration. But my question is: what is the point of putting jquery in rating module build file when it's already included into default module output file?





Aucun commentaire:

Enregistrer un commentaire