2012-12-31 23 views
0

我正在使用RequireJS加載模塊和JamJS來管理它們的backbone-boilerplate項目。 我需要config.js文件如下:RequireJS如何從果醬文件包部分指定填充文件依賴項

require.config({ 
    deps: ["../vendor/jam/require.config", "main"], 
    paths: { 
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage" 
    }, 
    shim: { 
    "backbone.localStorage": { 
     deps: ['backbone'] 
    } 
    } 
}); 

正如你可以看到從果醬配置文件jam/require.config.js的RequireJS加載配置,指定骨幹,jQuery和下劃線。接下來是一塊文件:

"packages": [ 
     { 
      "name": "backbone.layoutmanager", 
      "location": "../vendor/jam/backbone.layoutmanager", 
      "main": "backbone.layoutmanager.js" 
     } 
     { 
      "name": "backbone", 
      "location": "../vendor/jam/backbone", 
      "main": "backbone.js" 
     } 
    ], 
    "version": "0.2.11", 
    "shim": { 
     "backbone.layoutmanager": { 
      "deps": [ 
       "jquery", 
       "backbone", 
       "lodash" 
      ], 
      "exports": "Backbone.LayoutManager" 
     } 
     "backbone": { 
      "deps": [ 
       "jquery", 
       "lodash" 
      ], 
      "exports": "Backbone" 
     } 
    } 
}; 

我想在我的config.js庫backbone.localStorare指定依賴於包款定義的骨幹。 另外,如果我指定如下主幹路,然後就發現骨幹庫,但一個錯誤消息說發現下劃線未加載:

require.config({ 
    deps: ["../vendor/jam/require.config", "main"], 
    paths: { 
    "backbone": "../vendor/jam/backbone/backbone", 
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage" 
    }, 
    shim: { 
    "backbone.localStorage": { 
     deps: ['backbone'] 
    } 
    } 
}); 

我可以使用jamjs添加backbone.localStorage庫,但可用的版本包是舊的,所以我更喜歡手動下載最後一個包。

任何想法或幫助將不勝感激。

回答

1

骨幹需要Underscore & jQuery

shim: { 
    "backbone": { 
     "deps": [ "underscore", "jquery" ], 
     "exports": "Backbone" //attaches "Backbone" to the window object 
    }, 
    "underscore": { 
     "exports": "_" 
    } 
} 

所以我認爲這是你適應你的最佳jam/require.config.js

編輯:

接下來,在你的問題中packages部分,這就是jam/require.config.js的一部分?位置相對於jam/require.config.js的位置?

您是否嘗試過在自己的config.js添加packages部分:

"packages": ["backbone", "backbone.layoutmanager"] 
+0

是的,我知道的依賴。我想知道的是如何指定軟件包部分中指定的勻場依賴關係。 – EricSonaron

+0

更新了我的答案。 – asgoth

+0

感謝您的最新更新幫助我。我也做出了答案,以顯示我最終寫的兩個文件。 – EricSonaron

2

感謝asgoth我可以解決這個問題。我把下面的文件。

使用此配置,我可以將墊片庫放置在我的config.js文件中,該文件取決於在require.config.js文件中由果醬管理的包。

config.js

// Set the require.js configuration for your application. 
require.config({ 

    // Initialize the application with the main application file and the JamJS 
    // generated configuration file. 
    deps: ["../vendor/jam/require.config", "main"], 

    // Packeges defined at jam/require.config.js required by shim libraries 
    packages: [ 
    {"name" : "backbone"}, 
    {"name" : "jquery"} 
    ], 

    paths: { 
    // Put paths here. 
    "codemirror" : "../vendor/codemirror-3.0/lib/codemirror", 
    "codemirror-markdown": "../vendor/codemirror-3.0/mode/markdown/markdown", 
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage", 
    "bootstrap" : "../vendor/bootstrap-2.2.2/js/bootstrap" 
    }, 

    shim: { 
    // Put shims here. 
    "codemirror-markdown": { 
     deps: ["codemirror"] 
    }, 
    "backbone.localStorage": { 
     deps: ['backbone'] 
    }, 
    "bootstrap": { 
     deps: ['jquery'] 
    } 
    } 

}); 

require.config.js

var jam = { 
    "packages": [ 
     { 
      "name": "jquery", 
      "location": "../vendor/jam/jquery", 
      "main": "jquery.js" 
     }, 
     { 
      "name": "backbone.layoutmanager", 
      "location": "../vendor/jam/backbone.layoutmanager", 
      "main": "backbone.layoutmanager.js" 
     }, 
     { 
      "name": "underscore", 
      "location": "../vendor/jam/underscore", 
      "main": "underscore.js" 
     }, 
     { 
      "name": "backbone", 
      "location": "../vendor/jam/backbone", 
      "main": "backbone.js" 
     }, 
     { 
      "name": "lodash", 
      "location": "../vendor/jam/lodash", 
      "main": "./lodash.js" 
     } 
    ], 
    "version": "0.2.11", 
    "shim": { 
     "backbone.layoutmanager": { 
      "deps": [ 
       "jquery", 
       "backbone", 
       "lodash" 
      ], 
      "exports": "Backbone.LayoutManager" 
     }, 
     "underscore": { 
      "exports": "_" 
     }, 
     "backbone": { 
      "deps": [ 
       "jquery", 
       "lodash" 
      ], 
      "exports": "Backbone" 
     } 
    } 
}; 

if (typeof require !== "undefined" && require.config) { 
    require.config({packages: jam.packages, shim: jam.shim}); 
} 
else { 
    var require = {packages: jam.packages, shim: jam.shim}; 
} 

if (typeof exports !== "undefined" && typeof module !== "undefined") { 
    module.exports = jam; 
} 
相關問題