2016-09-21 10 views
0

require.jsアプリケーションを最適化しようとしています。アプリケーションはDurandalを使って書かれており、gulp-durandalプラグインを介してr.jsにアクセスしています(gulpでDurandalアプリケーションを構築するための適切なデフォルトを持つr.jsのラッパーです)。R.js optimmiserがすべての依存関係をロードしていません

ローカルマシンでgulpタスクを実行すると、すべて正常に動作します。しかし、ビルドサーバー(Team City)でまったく同じgulpタスクを実行しようとすると、ビルドが失敗します。ビルド中にエラーはスローされず、成功したように見えますが、生成されたjsファイルは、ローカルにビルドされたバージョンの2/3で、いくつかのファイルがありません。

r.jsのログインを有効にすると、ビルドサーバー上のタスクが正しい依存関係を引き出していないように見えます。例えば、私のmain.jsで私の最初に輸入

define(["require", "exports", './validationOnChange', './sortCode',  './currency', './maskedAccountNumber', './showInfo', './scrollTo', './validation', './slideDown', './datepicker', './numericInput', './date', './command', 'bindings/worldPay', './collapse'], function (require, exports) { 
"use strict"; 

})のリストを指しI「はバインディング/バインディング」をもたらすコールを定義します。

これらの輸入の一例)が

define(["require", "exports", 'knockout', 'moment'], function (require, exports, ko, moment) { 
"use strict"; 
ko.bindingHandlers['date'] = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     var val = ko.unwrap(valueAccessor()); 
     if (val) { 
      $(element).html(moment(val).format('DD/MM/YYYY')); 
     } 
    } 
}; 

}です。

作業ローカルタスクでは、これらのファイルはすべて依存関係と共にインポートされます。たとえば、上記のファイルはビルドに瞬時に引き込まれます。モーメントはデフォルトのアプリケーションファイルにはありませんが、requirejs設定のパスに指定されています。ビルドサーバーで同じタスクを実行すると、上記のファイルが含まれますが、瞬間ではありません。ビルドされたファイルを実行しようとすると、モジュールが見つからなかったというエラーが表示されます(つまり、ファイルには表示されていますが、上記のモジュールは見つかりません)。

r.jsのログによると、ローカルマシンのビルドプロセスはmain.jsをロードし、必要に応じてファイルをインポートする依存関係ツリーを歩きます。次に、既定のappディレクトリの下にある、まだ読み込まれていないファイルを取り込みます。

しかし、サーバー上では、r.jsはmain.jsファイルを読み込み、明示的な依存関係を持っていますが、依存関係チェインを続行するのではなく、appフォルダーの下にあるすべてのファイルを読み込むだけです。

私はアーモンドの有無にかかわらず、uglifyの有無にかかわらず、除外、相対パス、絶対パスを削除し、findNestedDependenciesをtrueに設定し、main.jsをinsertRequireで明示的にロードしました。誰もがこれを引き起こす可能性があることを知っている?

ありがとうございました。

答えて

0

これはr.jsとは関係ありませんでした。私たちはtypescriptを使用していて、サーバ上のビルドはAMDにコンパイルされておらず、commonjs形式を使用していたようです。

関連する問題