我们正在使用Durandal构建一个应用程序,这个应用程序目前相当大,我们目前正在研究将应用程序文件夹中的所有JS文件打包到一个主-built.js文件中。我想是很基本也很平常的东西。
我用的是Gulp和分机。在这里,我们的吞咽文件:
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文件的片段
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,我会得到与我们的应用程序相同的行为。你被困在加载屏幕上,没有任何错误。
所以我在这里,我确实读了很多关于这个问题的书,但是没有找到任何东西来解决这个问题。希望这里的人已经遇到这些行为,并有一个解决方案来分享。
谢谢!
发布于 2015-04-23 11:21:33
我也有同样的要求和问题。require.js似乎没有调用启动Durandal应用程序的主模块,这就是为什么它被卡在加载屏幕上的原因。我能够通过隐式调用主模块来解决这个问题:
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"));
});发布于 2015-03-17 23:24:55
我下载了你的项目,并尝试用最新版本的gulp和durandal构建它。最初,它没有构建,并给出了以下错误:
TypeError: Cannot read property 'normalize' of undefined这是rjs的文本插件的一个问题,您可以通过将以下内容添加到您的gulp文件(杏仁旁边,minify,输出)来解决这个问题.财产):
rjsConfigAdapter : function(rjsConfig){
rjsConfig.deps = ['text'];
return rjsConfig;
}一旦我这样做,构建完成,我可以构建或不缩小,杏仁和需求,应用程序工作良好。
https://stackoverflow.com/questions/28928076
复制相似问题