と にDurandal 2
基づくアプリがASP.NET MVC 5
ありWeb API
、最初のIndex.cshtml
( on HomeController
) は MVC ルーターを介して提供されます。それ以降は、すべて通常の html ビューが Durandal ルーターによって処理されます。
とにかく、gulp-userrefを使用してすべてcss
のjs
ファイルを連結しようとしています。すべてが機能しておりgulp-useref
、新しく連結されたファイルとindex.cshtml
、更新されたスクリプトとスタイルシートの参照をdist
フォルダーにドロップします。
もちろん、アプリケーションが機能するためには、更新index.cshtml
を元に戻す必要がありViews/Home/
ます。まさにそれを行う「コピー」タスクを作成しましたgulp
。元のファイルを上書きし、連結されたファイルindex.cshtml
へのパスを修正します。
これも同様に機能しますが、連結されたファイルへの参照を挿入する必要がある場所をマークする html コメントを削除するため、プロセスを繰り返すことはできません。 js
css
useref
いくつかのコードで説明しましょう。
私Index.cshtml
は持っています:
<html>
<head></head>
<body>
<!-- build:js js/lib.js-->
<script src="/bower_components/numeral/languages.js"></script>
<script src="/scripts/bootstrap.js"></script>
<script src="/scripts/typeahead.js"></script>
<script src="/scripts/knockout-bootstrap.js"></script>
<script src="/scripts/knockout-extenders.js"></script>
<!-- endbuild -->
</body>
</html>
これはgulp-useref
、更新されたスクリプト参照を配置する場所であるため、最終的には次のようになります。
<html>
<head></head>
<body>
<script src="/js/lib.js"></script>
</body>
</html>
ご覧のとおりuseref
、HTML コメントが削除されるため、元のindex.cshtml
ファイルをこのファイルで上書きするuseref
と、更新されたスクリプト タグを配置する場所がわかりません。元のファイルを上書きしないindex.cshtml
と、アプリケーションは連結されたファイルを使用しません。
私は初めてなgulp
ので、完全に間違った方法でこれを行っている可能性がありますが、自動化された方法で連結ファイルを使用していることを確認するにはどうすればよいですか?/Views/Home/index.cshtml
または、代わりに、私がやろうとしていること、つまりすべてを展開の準備をするためのより良いアプローチはありますか?
参考までに、関連するgulp
タスクを次に示します。
gulp.task("optimize-for-deployment", function () {
var assets = $.useref.assets({ searchPath: "./" });
var cssFilter = $.filter("**/*.css");
var jsFilter = $.filter("**/*.js");
return gulp
.src(config.index)
.pipe($.plumber())
.pipe(assets)
.pipe(cssFilter)
.pipe($.csso())
.pipe(cssFilter.restore())
.pipe(jsFilter)
.pipe($.uglify())
.pipe(jsFilter.restore())
.pipe(assets.restore())
.pipe($.useref())
.pipe(gulp.dest(config.appDist));
});
// copy the updated index.cshtml to Views/Home/
gulp.task("copy-for-deployment", ["optimize-for-deployment"], function () {
return gulp.src(config.appDist + "index.cshtml")
.pipe($.replacePath(/js\/lib.js/, "/app/dist/js/lib.js"))
.pipe($.replacePath(/style\/app.css/, "/app/dist/style/app.css"))
.pipe(gulp.dest(config.indexLocation));
});