将RequireJS / Backbone项目归为一个单独的.js文件?

时间:2013-05-12 23:25:23

标签: backbone.js requirejs minify amd uglifyjs

我与the following tutorial一起努力将我的项目优化为一个单独的.js文件,但不幸的是我似乎无法获得预期的结果。我得到r.js为我创建一个优化的文件夹,但是我在各自的文件夹中获得了每个.js文件的uglified副本,而不是单个文件。似乎最后的连接步骤在某种程度上是缺失的。

我正在尝试利用现有的配置文件而不是使用路径,我不知道该特定步骤是否会破坏它。

我的build / app.build.js是:

({
  appDir: '../',
  baseUrl: 'js',
  mainConfigFile: '../js/config.js',
  dir: '../../my-app-build',
  modules: [{
    name: 'main'
  }]
})

我的main.js文件将配置文件作为依赖项:

require(["config"], function() {
  require(['underscore', [...]
    [...]
  }
}

配置文件是声明我所有项目依赖项的地方:

require.config({
  baseUrl: "js",
  paths: {[...]},
  shim: {...]},
});

有没有人能够深入了解为什么我可能无法获得我正在寻找的单个文件输出?我尝试了另一种方法in this post,但是只能为我生成main.js,并在其前面加上配置文件。

谢谢!

3 个答案:

答案 0 :(得分:3)

问题是由r.js构建配置文件中缺少以下选项引起的:

findNestedDependencies: true

没有它,r.js将不会超过main.js中的第一个需求,因此只加载config.js而不加载下一级依赖项。仅供参考(请注意,它将优化产品保存在同一源文件夹中,这并不理想)如下所示:

({
  baseUrl: '.',
  mainConfigFile: 'config.js',
  name: 'main',
  out: 'main-build.js',
  findNestedDependencies: true,
})

答案 1 :(得分:1)

我遇到了同样的问题,并从Github问题列表中获得了解决方案。可能这个配置参数也会对你有所帮助

https://github.com/jrburke/r.js/issues/379

If you only want one JS file built, instead of using dir: use out: for a single JS file build.

答案 2 :(得分:0)

指定输出文件路径:

({
    // ...
    out: '../main.min.js'
})