如何阻止requirejs包含所有源文件并仅包含模块文件?

时间:2012-11-28 21:55:36

标签: requirejs gruntjs

当我使用r.js构建项目时(我正在通过grunt进行,但我离题),它会对项目的所有javascript文件进行uglifies和压缩,并将它们包含在build文件夹中,即使所有这些文件已压缩为单个javascript文件,不再以其各自的形式使用。

我正在使用模块,因此我不能使用“out”标志b / c它不兼容。我正在使用grunt-contrib-clean来清理所有额外的文件,但如果我可以避免首先包含它们,那将是理想的。

这是我的grunt options.js:

module.exports = {
  appDir: 'src',
  baseUrl: 'js/',
  mainConfigFile: 'src/js/common.js',
  dir: 'www',
  modules: [
    {
      name: 'common',
      include: [
          'jquery',
          'underscore',
          'handlebars',
          'hbs',
          'i18nprecompile',
          'json2',
          'Class'
      ]
    },
    {
        name: 'app/page1',
        exclude: ['common']
    },
    {
        name: 'app/page2',
        exclude: ['common']
    }
  ]
};

当它构建时,它包含lib文件夹中的所有文件(当需要的唯一文件是require.js时),它包括uglified版本所有由page1和page2导入的javascript文件,即使所有这些文件都是合并到page1.js和page2.js。

我是否遗漏了某些东西,或者仅仅是生活中的事后建立清理?

2 个答案:

答案 0 :(得分:1)

可以通过将removeCombined设置为false来简单地修复:

    //If set to true, any files that were combined into a build layer will be
    //removed from the output folder.
    removeCombined: false,

详细介绍任何其他构建选项can be found in this example file

答案 1 :(得分:1)

为此,您可以使用:

skipDirOptimize: true, 
removeCombined: true

skipDirOptimize: true会阻止requirejs优化其他文件

removeCombined: true将删除所有组合到模块的文件