Require.js和r.js包括子模块的所有依赖项

cha*_*rly 4 javascript requirejs r.js

我第一次使用require.js,目前一切正常.但是,我开始想要进行构建.我的想法是创建一个包含所有js和模板的文件.但是,每次我使用r.js时它只包含我的主模块的依赖项.

这是我的app.build.js:

({
appDir: "public/javascripts",
baseUrl: ".",
dir: "build",
paths: {
    "hbs": "lib/hbs",
    "jquery": "lib/jquery",
    "Handlebars": "lib/Handlebars",
    "Backbone": "lib/backbone",
    "underscore": "lib/underscore",
    "bootstrap": "lib/bootstrap.min.js"
},
modules: [{name: "main"}],
shim: {
    "bootstrap": {
      deps: ["jquery"],
      exports: "$.fn.popover"
    },
    underscore: {
      exports: '_'
    },
    'Handlebars': {
      exports: 'Handlebars'
    },
    Backbone: {
      deps: ["underscore", "jquery"],
      exports: "Backbone"
    }
}}) 
Run Code Online (Sandbox Code Playgroud)

main.js的开头:

require.config({
 paths: {
    "hbs": "lib/hbs",
    "Handlebars": "lib/Handlebars",
    "Backbone": "lib/backbone",
    "underscore": "lib/underscore",
    "jquery": "lib/jquery",
    "bootstrap": "lib/bootstrap.min.js"
  },
  hbs: {
    disableI18n: true
  },
  shim: {
    "bootstrap": {
      deps: ["jquery"],
      exports: "$.fn.popover"
    },
    underscore: {
      exports: '_'
    },
    'Handlebars': {
      exports: 'Handlebars'
    },
    Backbone: {
      deps: ["underscore", "jquery"],
      exports: "Backbone"
    }
  }
});

require(['jquery', 'Backbone', 'videos'], function($, Backbone, Videos) { // Whatever });
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在我的构建'main.js'中创建的最终文件仅包含:jquery,下划线,主干和视频.我怎样才能确保它还包含模块的依赖关系videos:模板'hbs!template/videos/show'.我怎样才能确保即使在任何地方都不需要bootstrap.min.js?最后我应该删除require.config,因为它将定义不应该是的路径,因为所有模块都在最终文件中?

小智 8

要使优化器包含所有嵌套依赖项,请在构建文件或命令行中包含此选项:

{
     findNestedDependencies: true
}
Run Code Online (Sandbox Code Playgroud)

这使它按预期工作,您不必在主文件中包含所有依赖项.这是一个秘密......我从来没有在文档中看到这个,但我在某个地方的随机博客上看到了它.