我想使用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']
}
}
}
答案 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
让它将所有内容打包发布。