用Grunt构建Durandal(R.js + Text)

时间:2014-01-15 18:00:45

标签: requirejs gruntjs durandal requirejs-text grunt-contrib-requirejs

我想使用Grunt建立一个Durandal项目,因为Weyland仍然完全无证,并不像Grunt那样标准。

要做到这一点,grunt任务需要在优化期间提取所有js和html文件,但我无法通过文本模块让RequireJS内联html文件。

看起来weyland会复制文本文件manually,但我无法弄清楚它是如何让requirejs(或almond,在本例中)实际使用它们。我看到this question,但它要求在define调用中引用文本模块,这在Durandal中没有。

我的for 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']               
                }
            }
        }

2 个答案:

答案 0 :(得分: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'
        }
    }
},

答案 1 :(得分:2)

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

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

您可以运行make start开始开发,make dist让它将所有内容打包发布。