javascript requirejs

javascript - RequireJS: ¿Cómo excluir ciertas rutas cuando se construye en un solo archivo?



(1)

Tengo una aplicación Backbone que utiliza RequireJS 2.1.8 (es decir, todas mis vistas de Backbone usan define () para especificar sus dependencias). Todo funciona bien y ahora estoy tratando de usar r.js (instalado a través de NPM) para concat / minificar todo mi JavaScript en un solo archivo.

¿Cómo puedo configurar una configuración de r.js que excluya las dependencias que comienzan con ciertas rutas?

He incluido mi archivo main.js a continuación. En este caso, quiero que el archivo de salida "construido" excluya las bibliotecas de terceros (es decir, jquery, backbone, etc.). Además, quiero excluir cualquier dependencia que comience con "webapp /" (por ejemplo, "webapp / dynamic_cfg", lo que da como resultado que se envíe una solicitud a mi aplicación Djang para un archivo / módulo JavaScript generado dinámicamente).

Estructura de la carpeta:

|--static/ |--main.js |--myapp/ |--views/ |-- MyView.js |-- ... |--lib |--backbone-1.0/ |--underscore-1.5.1/ |-- ...

index.html (una plantilla de Django):

<script src="{% static ''lib/requirejs-2.1.8/require.min.js'' %}" data-main="{% static ''main.js'' %}" ></script>

main.js:

requirejs.config({ paths: { "jquery": ''lib/jquery-1.10.2/jquery.min'', "text_loader": ''lib/requirejs-text-2.0.10/requirejs-text'', "fuelux": ''lib/fuelux-2.3.1'', "backbone": ''lib/backbone-1.0/backbone.min'', "underscore": ''lib/underscore-1.5.1/underscore.min'', // Any module that requires ''webapp/*'' will result Require.js // making a request to the server webapp. "webapp": ''..'' }, shim: { ''backbone'': { deps: [''underscore'', ''jquery''], // Load these dependencies first exports: ''Backbone'' // Create global var with this name for the module }, ''underscore'': { exports: ''_'' } } }); // Startup require([''webapp/dynamic_cfg'', ''myapp/util/logger'', ''myapp/view/AppView'', ''myapp/AppRouter'', ''fuelux/all''], // Dependencies are loaded and passed to this function function(cfg, logger, AppView, AppRouter, fuelUx) { logger.info("Starting up with config:", cfg); var appView = new AppView(); var appRouter = new AppRouter(); } );


La configuración de las rutas para "vaciar:" en mi configuración r.js funcionó. Ejemplo:

// This is a RequireJS config file (function(){ return { // Name of input file (without the .js extention) "name": "main", // Directory containing input file "baseUrl": "static/", // Look in this file for the require.config() call and extract it "mainConfigFile": "static/main.js", "paths": { // Don''t attempt to include dependencies whose path begins with webapp/ "webapp": "empty:", // Ditto for the following 3rd-party libraries "jquery": "empty:", "fuelux": "empty:", "backbone": "empty:", "underscore": "empty:" }, "optimize": "uglify2", }; })()