首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Durandal优化中的Gulp和Gulp-Durandal不工作

Durandal优化中的Gulp和Gulp-Durandal不工作
EN

Stack Overflow用户
提问于 2015-03-08 15:18:21
回答 2查看 1.3K关注 0票数 5

我们正在使用Durandal构建一个应用程序,这个应用程序目前相当大,我们目前正在研究将应用程序文件夹中的所有JS文件打包到一个主-built.js文件中。我想是很基本也很平常的东西。

我用的是Gulp和分机。在这里,我们的吞咽文件:

代码语言:javascript
复制
var gulp = require('gulp');
var durandal = require('gulp-durandal');

gulp.task('build-portal', function () {
    durandal({
        baseDir: 'app',
        main: 'main.js',
        output: 'main-built.js',
        almond: false,
        minify: false
    }).pipe(gulp.dest('app'));
});

下面是我们的main.js文件的片段

代码语言:javascript
复制
require.config({
paths: {
    'text': '../Scripts/text',
    'durandal': '../Scripts/durandal',
    'plugins': '../Scripts/durandal/plugins',
    'transitions': '../Scripts/durandal/transitions'
},
shim: {
},
waitSeconds: 0
});

define('jquery', [], function () { return jQuery; });
define('knockout', [], function () { return ko; });
define('ga', function () { return ga; });

define(
    ["require", "exports", "durandal/app", "durandal/viewLocator", "durandal/system", "plugins/router", "services/logger", "modules/knockout.extensions", "modules/knockout.validation.custom"],
    function (require, exports, __app__, __viewLocator__, __system__, __router__, __logger__, __koExtensions__, __koValidationCustom__) {
        var app = __app__;
        var viewLocator = __viewLocator__;
        var system = __system__;
        var router = __router__;

正如你可以在吞咽文件中看到的,我们不想使用杏仁,但是RequireJs相反,由于某些原因,杏仁不适合我们的项目,而且无论如何,我们更喜欢RequireJ,不管它最后是否大于杏仁。那是刹车的地方。运行命令构建主-built.js文件花了一些时间,但最后我得到了包含其中所有内容的文件。

问题是,当我试图加载应用程序时,它会粘在加载屏幕上。它不会更进一步,浏览器控制台中根本没有错误。

我在旁边创建了一个新项目,以测试我们的代码是否有些错误,并发现它可能没有。您可以在这里找到该项目:https://github.com/maroy1986/DurandalGulpBundling

如果我用杏仁选项构建这个项目,一切都很好,但是如果我切换almound让gulp使用RequireJs,我会得到与我们的应用程序相同的行为。你被困在加载屏幕上,没有任何错误。

所以我在这里,我确实读了很多关于这个问题的书,但是没有找到任何东西来解决这个问题。希望这里的人已经遇到这些行为,并有一个解决方案来分享。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-23 11:21:33

我也有同样的要求和问题。require.js似乎没有调用启动Durandal应用程序的主模块,这就是为什么它被卡在加载屏幕上的原因。我能够通过隐式调用主模块来解决这个问题:

代码语言:javascript
复制
gulp.task("durandal", function() {
    return durandal({
        baseDir: "app",
        main: "main.js",
        output: "main-built.js",
        almond: false,
        minify: true,
        rjsConfigAdapter: function(config) {
            //Tell requirejs to load the "main" module
            config.insertRequire = ["main"];
            return config;
        }
    })
    .pipe(gulp.dest("dist"));
});
票数 1
EN

Stack Overflow用户

发布于 2015-03-17 23:24:55

我下载了你的项目,并尝试用最新版本的gulp和durandal构建它。最初,它没有构建,并给出了以下错误:

代码语言:javascript
复制
 TypeError: Cannot read property 'normalize' of undefined

这是rjs的文本插件的一个问题,您可以通过将以下内容添加到您的gulp文件(杏仁旁边,minify,输出)来解决这个问题.财产):

代码语言:javascript
复制
rjsConfigAdapter : function(rjsConfig){
            rjsConfig.deps = ['text'];
            return rjsConfig;
        }

一旦我这样做,构建完成,我可以构建或不缩小,杏仁和需求,应用程序工作良好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28928076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档