/ / gulp build processにSignalRを含めるには? - javascript、asp.net、signalr、gulp、durandal-2.0

SignalRをGulpビルドプロセスに含めるにはどうすればいいですか? - javascript、asp.net、signalr、gulp、durandal-2.0

Durandalアプリをで実行したとき main.js (縮小されていません)、読み込みます signalr.core そして signalr.hubs しかし、gulpでビルドした後は正しくロードできません signalr.hubs.

これが私のRequireJSの設定です:

requirejs.config({
paths: {
"text": "../Scripts/text",
"durandal": "../Scripts/durandal",
"plugins": "../Scripts/durandal/plugins",
"transitions": "../Scripts/durandal/transitions",
"knockout": "../Scripts/knockout-3.2.0",
"knockout.validation": "../Scripts/knockout.validation",
"bootstrap": "../Scripts/bootstrap",
"jquery": "../Scripts/jquery-2.1.3",
"jquery.utilities": "../Scripts/jquery.utilities",
"toastr": "../Scripts/toastr",
"offline": "../Scripts/offline",
"signalr.core": "../Scripts/jquery.signalR-2.2.0.min",
"signalr.hubs": "../signalr/hubs?"
},
shim: {
"jquery.utilities": {
deps: ["jquery"]
},
"bootstrap": {
deps: ["jquery"],
exports: "jQuery"
},
"knockout.validation": {
deps: ["knockout"]
},
"signalr.core": {
deps: ["jquery"],
exports: "$.connection"
},
"signalr.hubs": {
deps: ["signalr.core"],
}
}
});

define("jquery", function () { return jQuery; });
define("knockout", ko);
define("moment", moment);

define(["durandal/system", "durandal/app", "durandal/viewLocator", "durandal/composition", "global/session", "knockout", "knockout.validation", "signalr.core", "signalr.hubs"], function (system, app, viewLocator, composition, session) {
});

これが私のgulpfileです。

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

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-built.js", //same as default, so not really required.
almond: true,
minify: true
})
.pipe(gulp.dest("app"));
});

縮小を完全に理解していないしかし、SignalRはAMDに準拠していないので、それが問題になるかもしれません。また、ハブエンドポイントは動的なJavaScriptを生成するため、ビルドに含めることはできません。

何が足りないのか signalr.hubs 一緒に遊ぶ main-built.js? SignalJをRequireJSとは別にロードするべきですか?

回答:

回答№1は2

動的エンドポイントを機能させる方法はいくつかあると思いますが、既にご存知のように、「治療するにはちょっと違う種類の獣です。 プロキシレスアプローチ (これは動的エンドポイントの必要性を排除しますが、呼び出しとイベントハンドラーを少し微調整する必要があります)、またはビルドプロセスにステップを追加して動的エンドポイントをシリアル化します。 signar.exe 説明したように、ユーティリティ ここに.