【问题标题】:Optimizing Durandal's build process优化 Durandal 的构建过程
【发布时间】:2016-09-23 17:28:30
【问题描述】:

Durandal 的 HTML starter kit pro 包含以下用于优化构建的繁琐任务:

durandal: {
    main: {
        src: ['app/**/*.*', 'lib/durandal/**/*.js'],
        options: {
            name: '../lib/require/almond-custom',
            baseUrl: requireConfig.baseUrl,
            mainPath: 'app/main',
            paths: mixIn({}, requireConfig.paths, { 
                'almond': '../lib/require/almond-custom.js' 
            }),
            exclude: [],
            optimize: 'none',
            out: 'build/app/main.js'
        }
    }
}

我对此有些担心,需要您的帮助解决:

  1. 脚本文件冗余。构建过程将 lib 文件夹与 jQuery、bootstrap 等脚本一起保存。为什么?如果您查看构建的build/app/main.js 是否已添加所有这些脚本。这导致我提出以下问题:

  2. 如果我删除 lib 文件夹,一切正常,除了我在控制台中得到一个 require is not defined 的事实。代码仍然在寻找lib/require/require.js,只需在其中添加即可解决。然而,这不正是almond 的意义所在吗?它包含在构建的build/app/main.js 文件中。据我所知,Almond 是在优化文件中使用的 require 的轻量级替代品。

要重现问题,您只需运行顶部链接中提供的“快速启动”即可。

【问题讨论】:

  • 这个链接可能对你有帮助:stackoverflow.com/questions/15684040/…
  • 您首先关心的是,您是否尝试过“removeCombined: true”属性?
  • @nikhil 是的,但它似乎没有任何效果
  • 我克隆了你的项目并运行了“grunt durandal:main”。在 build 文件夹中,只创建了 main.js 文件。这不是你需要的吗?
  • 你需要将你的index.html中脚本文件的引用改为"build/app/main.js"

标签: javascript requirejs durandal almond


【解决方案1】:

是的,您说得对,main.js 包含运行应用程序所需的一切。您获得require is not defined 的原因是,如果您仔细查看index.html 文件,您会发现index.html 指的是在/lib/require 文件夹中查找文件并通过它加载我们的main.js 文件。在 index.html 的下方有另一行已注释,您可以取消注释,即使您删除 lib 目录,它也应该正常工作。

在取消注释<script src="app/main.js"></script> 行并注释<script src="lib/require/require.js" data-main="app/main"></script> 之后删除/lib 目录会导致的唯一错误。

希望对你有帮助。

【讨论】:

  • 当您想到它时非常明显。感谢第二双眼睛!
猜你喜欢
  • 2017-02-14
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
相关资源
最近更新 更多