对于外部模块,使用gulp构建durandaljs失败

时间:2015-03-05 09:15:38

标签: gulp durandal amd almond

我正在使用gulp-durandal来构建我们的durandal应用程序。它失败了我们的第一个模块,它通过以下方式进行淘汰:

定义(['敲除',...

[09:35:27] Durandal错误:ENOENT,没有这样的文件或目录' C:\ xxxxx \ app \ knockout.js' 在模块树中:     公司/的ViewModels /编辑

at Object.fs.openSync (fs.js:438:18)

我将knockout定义为config.js中的补丁(标准requirejs方式),但似乎gulp-durandal无法解析config.js中的路径?

'淘汰':' ../ Scripts / lib / knockout / knockout-2.3.0',

如何让gulp-durandal使用我们的配置路径,而不是尝试直接在app文件夹下解析模块?我尝试使用options.extraModules,但这只允许你添加模块的路径,而不是模块的符号名称,所以这似乎不是正确的方法。

我的durandaljs应用程序的基本结构遵循我认为的标准指南,我在App文件夹下有一个config.js和main.js。

我的config.js:

define([], function() {
return {
    paths: {
        'text': '../Scripts/lib/require/text',
        'durandal': '../Scripts/durandal',
        'plugins': '../Scripts/durandal/plugins',   

我的main.js

require(['config'], function(config) {
require.config(config);

require(['durandal/system', 'durandal/app', 'durandal/viewLocator', 'plugins/widget', 'custombindings'],
    function(system, app, viewLocator, widget) {
        ..... app code here.....

}

gulpfile.js:

var gulp = require('gulp');

var durandal = require('gulp-durandal');

require(['App/config'], function(config){
  console.log('loaded config');
});

gulp.task('durandal', function(){
durandal({
baseDir: 'app', //same as default, so not really required.
main: 'main.js', //same as default, so not really required.
output: 'main.js', //same as default, so not really required.
almond: true,
minify: true,
require:true
})
.pipe(gulp.dest('dir/to/save/the/output'));
});

我想问题是如何将我的config.js路径加载到gulp中以便正确解析路径?我试过了:

var gulp = require('gulp');

var durandal = require('gulp-durandal');

require(['App/config'], function(config){
  console.log('loaded config');
});

但似乎只需要一个字符串作为输入(我猜需要函数在gulp!= require from require.js)

1 个答案:

答案 0 :(得分:0)

我认为问题在于你的gulp-durandal任务需要配置来模仿config.js文件。如果您需要进一步的帮助,请提供更多来自您的gulp-durandal任务的代码。