5

我想使用 Grunt 来构建一个 Durandal 项目,因为 Weyland 仍然完全没有文档记录,并且不像 Grunt 那样标准。

为此,grunt 任务需要在优化期间拉入所有 js 和 html 文件,但我无法让 RequireJS 通过文本模块内联 html 文件。

看起来 weyland手动复制文本文件,但我无法弄清楚它在做什么来获取 requirejs(或杏仁,在这种情况下),以实际使用它们。我见过这个问题,但它需要在define调用中引用文本模块,这在 Durandal 中没有完成。

我的要求的 gruntfile 使用这个配置

requirejs: {
            build: {
                options: {                  
                    name: '../lib/require/almond-custom', //to deploy with require.js, use the build's name here instead
                    insertRequire: ['main'], //needed for almond, not require
                    baseUrl: 'src/client/app',
                    out: 'build/main-built.js',
                    mainConfigFile: 'src/client/app/main.js', //needed for almond, not require
                    wrap: true, //needed for almond, not require
                    paths: {
                        'text': '../lib/require/text',
                        'durandal':'../lib/durandal/js',
                        'plugins' : '../lib/durandal/js/plugins',
                        'transitions' : '../lib/durandal/js/transitions',
                        'knockout': '../lib/knockout-2.3.0',
                        'bootstrap': '../lib/bootstrap.min',
                        'jquery': '../lib/jquery-1.9.1',
                        'Q' : '../lib/q.min'
                    },
                    inlineText: true,
                    optimize: 'none',
                    stubModules: ['text']               
                }
            }
        }
4

2 回答 2

5

您可能想尝试一下https://npmjs.org/package/grunt-durandal。我将其用作基于 grunt 的构建过程的一部分。有关示例,请参见https://github.com/RainerAtSpirit/HTMLStarterKitPro 。

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'
        }
    }
},
于 2014-01-15T21:55:56.317 回答
2

作为 Grunt 的可能替代方案,我建议查看Mimosa。它不像 Grunt 那样广泛使用,但有很好的文档记录,并且需要的配置少得多,如果你从 durandal 骨架开始,一切都会为你配置好,包括内联 html。

Durandal 还推荐它并告诉您如何开始使用它:http ://durandaljs.com/pages/get-started/

您可以运行make start以开始开发并将make dist其打包以供发布。

于 2014-01-15T21:31:27.257 回答