优化 Durandal 的构建过程

Optimizing Durandal's build process

Durandal 的 HTML starter kit pro 包含以下用于优化构建的 g运行t 任务:

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 的轻量级替代品。

要重现问题,您只需 运行 顶部 link 中提供的 "Quick start"。

是的,您是对的,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 目录会出现的唯一错误

希望对您有所帮助。