从Durandal build

时间:2016-10-06 07:04:00

标签: javascript requirejs durandal grunt-contrib-requirejs requirejs-optimizer

我正在使用Grunt构建Durandal starter kit pro包。

一切都很好,除了一个小细节。我想从优化器中排除一个文件(下面为app-config),并在构建完成后将其保留为非缩小文件。

基于其他SO线程建议,我目前正在使用empty:将其排除,这会按预期将其从优化文件中删除。但是,当我打开构建的项目时,我在控制台中收到错误:

Uncaught Error: main missing app-config

options: {
    name: '../lib/require/almond-custom',
    baseUrl: requireConfig.baseUrl,
    mainPath: 'app/main',
    paths: mixIn({ }, requireConfig.paths, { 
         'almond': 'lib/require/almond-custom', 
         'app-config': 'empty:' 
    }),
    optimize: 'none',
    out: 'build/app/main.js',
    preserveLicenseComments: false
}

杏仁是问题吗?我尝试使用include: ['path/to/require']将其切换到完整的requirejs,但没有成功。

如果您想在本地重现它,可以从上面的链接下载入门套件,或使用更接近我的示例的slightly configurated version。只需在文件夹中运行npm install,即可完成设置。

3 个答案:

答案 0 :(得分:3)

我已下载了您source code并执行了以下步骤。

  1. 解压缩zip文件,打开cmd并将目录更改为此文件夹。
  2. 运行npm install以安装所有依赖项。
  3. 运行grunt开始构建项目。
  4. 当我打开http://localhost:8999/并在1中看到警告alert(appConfig.foo); main.js时。 单击Ok以隐藏警报后,网页将处以罚款。还有更多的输入吗?

    First step

    Second step

    所以我不确定你是如何面对这个问题的。

答案 1 :(得分:0)

从此特定链接中找到的durandal个问题的引用 grunt-durandal

主模块控制durandal services的实施 该链接可在main.js

中找到

在这里你可以看到system.debug(true)。你可以按照帖子document中的说明删除它。

文章Overrides request execution timeout making it effectively infinite中引用的函数。

同样在grunt中使用uglify时,根据文档将debug设置为false。

根据documentation,您需要设置system.debug(false)

希望这可能会有所帮助。

答案 2 :(得分:0)

尝试:

....
paths: mixIn({ }, requireConfig.paths, { 
     'almond': ['lib/require/almond-custom', '!lib/require/almond-custom/app-config.js']
}),
....

请注意app-config.js的第二条路径是正确的。我认为你应该找到自己的方式,上面是一个提示,如果不是直接的解决方案。