【问题标题】:Requirejs optimiser - Include nested dependencies for certain files and foldersRequirejs 优化器 - 包括某些文件和文件夹的嵌套依赖项
【发布时间】:2013-10-13 07:49:24
【问题描述】:

我正在使用 RequireJS 优化器来缩小和连接我的代码。由于嵌套的依赖关系,目前 r.js 并没有缩小我的很多脚本。

我想包含以下的嵌套依赖项:

  • 里面的所有依赖:'js/services'
  • 特定 JavaScript 文件列表的所有嵌套依赖项

注意:我确实意识到有选项 findNestedDependencies: true 但这绝对会查找应用程序中所有 JavaScript 文件的所有依赖项,因为我只想对某些 JavaScript 文件和文件夹执行此操作,因为我有一组在每个页面/视图中始终使用的文件。

我当前的构建文件如下所示:

  ({
    baseUrl: '../static/js',
    mainConfigFile: '../static/js/main.js',
    name: 'main',
    out: '../static/js/scripts.min.js',
    paths: {
        requireLib: 'vendor/require/require.min'
    },
    include: 'requireLib'
})

我一直在按照本教程来运行优化器: http://www.youtube.com/watch?v=m6VNhqKDM4E

【问题讨论】:

    标签: javascript requirejs r.js


    【解决方案1】:

    您可以使用include 指定要强制到输出文件中的所有依赖项:

    // ...
    include: ['requireLib', 'js/services/dep1', 'js/services/dep2'],
    // ...
    

    不过,我认为没有办法包含整个文件夹(类似于"js/services/*")。


    由于在我的项目中,我有许多动态依赖项,我想在输出中包含我最终创建了一个“js/services/_all.js”模块,其中列出了其目录中的文件,例如:

    define([
        './dep1',
        './dep2'
      ],
      function () {
        // this module imports all modules from current folder so 
        // there's no need to list every single file in the build config
      });
    

    然后配置 r.js:

    // ...
    include: ['requireLib', 'js/services/_all'],
    // ...
    

    【讨论】:

    • 谢谢。我理解第一个选项,但我并不真正理解第二个示例。该模块是否是每个文件夹中的一个单独文件,其中列出了您希望包含在缩小代码中的所有文件?
    • 是的,在第二部分中,我只是想分享一个我用来避免在我的构建文件中列出多个小模块以保持可读性和可维护性的模式。取决于您在“js/services”中有多少导入;如果不超过 10-15,则可能不需要像这样的黑客。
    • 感谢您的帮助。第二个选项对我有用(我在使用第一个选项时遇到了一些奇怪的问题)。我有一个类似的问题,但这次为网站的各个部分创建单独的(连接和缩小)脚本。我在这里发布了一个单独的问题。如果您能看一下,我将不胜感激:stackoverflow.com/questions/19345796/…
    猜你喜欢
    • 2012-07-25
    • 2014-02-23
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2013-05-07
    相关资源
    最近更新 更多