Require.js优化器只是缩小main.js并忽略'paths'

时间:2014-01-20 00:39:16

标签: requirejs

main.js:

require.config({
  baseUrl: 'js/',

  paths: {
    'd3': 'lib/d3',
    'text': 'lib/text',
    'jquery': 'lib/jquery',
    'topojson': 'lib/topojson',
    'statecodes': 'lib/statecodes',
    'underscore': 'lib/underscore'
  },

  shim: {
    'lib/bootstrap': {
      deps: ['jquery']
    },
    'lib/backbone': {
      deps: ['jquery', 'underscore'],
      exports: 'Backbone'
    },
    'lib/wreqr': {
      deps: ['lib/backbone']
    },
    'lib/marionette': {
      deps: ['lib/wreqr'],
      exports: 'Marionette'
    }
  }
});

var deps = [
  'app',
  'utils/dataserver',
  'd3',
  'text',
  'jquery',
  'topojson',
  'statecodes',
  'underscore',
  'lib/bootstrap',
  'lib/backbone',
  'lib/marionette'
];

require(deps, function(app, ds) {
  app.start();
  ds.fetchall();
});

配置文件app.build.js:

({
  baseUrl: "../js",
  name: 'main',
  mainConfigFile: '../js/main.js',
  out: "../js/build.js"
})

通过运行r.js -o app.build.js我期望优化器缩小并连接path内的脚本。但它所做的只是缩小main.js。我错过了什么?

r.js -o app.build.js的输出:

Tracing dependencies for: main
Uglifying file: /Project/web/js/build.js

/Project/web/js/build.js
----------------
/Project/web/js/main.js

2 个答案:

答案 0 :(得分:1)

您必须将依赖项的文字数组而不是变量deps,作为require.的第一个参数传递。否则,优化器不知道要包含哪些文件。

答案 1 :(得分:0)

r.js只会跟踪它找到的应用程序所需的所有依赖项。您需要在require([], function() {});内包含入口点main.js,或者基本上包含require块,该块应该包含在data-main中定期使用RequireJS时指定的脚本中。