2013-08-27 27 views
16

RequireJS 2.1.8 kullanan bir Backbone uygulaması var (yani tüm Omurga görünümleri, bağımlılıklarını belirtmek için define() kullanır). Her şey harika çalışıyor ve şimdi tüm javamlarımı tek bir dosyaya sığdırmak/küçültmek için r.js'yi (NPM ile kurulmuş) kullanmaya çalışıyorum.RequireJS: Tek bir dosyaya oluştururken belirli yolları nasıl hariç tutabilirim?

Belirli yollarla başlayan bağımlılıkları dışarıda tutan bir r.js yapılandırmasını nasıl kurabilirim?

Aşağıda, main.js dosyasını ekledim. Bu durumda, "yerleşik" çıktı dosyasının 3. taraf kitaplıklarını (ör., Jquery, omurga, vb.) Hariç tutmasını istiyorum. Ayrıca, "webapp /" (ör. "Webapp/dynamic_cfg" ile başlayan herhangi bir bağımlılığı hariç tutmak istiyorum; bu, Djang uygulamasına dinamik olarak oluşturulmuş bir JavaScript dosyası/modülü için gönderilen bir istekle sonuçlanır).

klasör yapısı:

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

index.html (Django şablon):

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

main.js: içinde:

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(); 
    } 
); 
+0

mu ya [Bu] (http://stackoverflow.com/questions/17171133/exclude-all-starting-with-x-in-requirejs-module) veya [Bu] (http://stackoverflow.com/questions/9219113/requirejs-optimize-tool-exclude-folders) neye ihtiyacınız var? – explunit

cevap

30

için "boş" yolları ayarlama r.js yapılandırmam işe yaradı. Örnek:

// 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", 
    }; 
})() 
+1

Grunt CLI v0.1.9 ve grunt v0.4.2 ile grunt-contrib-requirejs' çalışmıyor. – kaiser

+1

grunt v0.4.5 + grunt-contrib-requirejs v0.4.4 çalışır – johnr

İlgili konular