1

次のようなhtmlファイルを作成します。

...
<!-- build:js build/js/vendor.js -->
<script src="dep/angular/angular.js"></script>
<!-- endbuild -->

次のようにファイルをビルドします。

<script src="build/js/vendor.xxxxxxxx.js"></script>

ここでgulp-angular-templatecache、すべてのビュー ファイルをパッケージ化し、template.js を生成します。このドキュメントを内部のコンパイル済み html ファイルに追加したいのですが、どうすればよいですか?

gulp-useref設定オプションでドキュメントを見つけましたadditionalStreamsが、機能を達成したくないものを見つけていました。

4

1 に答える 1

1

別の方法で解決しました。

最初にページに書きます:

<!-- build:templates --><!-- endbuild -->

パッキングする前gulp-replaceに、次のように置き換えます。

<!-- build:js build/js/templates.js -->
    <script src="build/js/templates.js"></script>
<!-- endbuild -->

最後にコンパイルを統一します。

コード:

var indexHtmlFilter = $.filter(['**/*', '!**/index_dev.html'], {
    restore: true
});

var fontglyphiconsMatch = /^\.\.\/fonts\/glyphicons/;
var fontawesomeMatch = /^\.\.\/fonts\/fontawesome-/;
var imgMatch = /^\.\.\/img\//;

var matchUrlType = function(url){
    if(fontglyphiconsMatch.test(url))
        return  url.replace(/^\.\./, '/dep/bootstrap-css-only');

    if(fontawesomeMatch.test(url))
        return url.replace(/^\.\./, '/dep/font-awesome');

    if(imgMatch.test(url))
        return url.replace(/^\.\./, '');
};
gulp.src('app/index_dev.html')
    .pipe($.htmlReplace({
        templates: `
            <!-- build:js build/js/templates.js -->
            <script src="build/js/templates.js"></script>
            <!-- endbuild -->
            `
    }))
    .pipe($.useref())
    .pipe($.if('*.js', $.uglify({
        output: {
            ascii_only: true
        }
    })))
    .pipe($.if('*.css', $.modifyCssUrls({
        modify: matchUrlType
    })))
    .pipe($.if('*.css', $.cleanCss()))
    .pipe(indexHtmlFilter)
    .pipe($.rev())
    .pipe($.revFormat({
        prefix: '.'
    }))
    .pipe(indexHtmlFilter.restore)
    .pipe($.revReplace())
    .pipe($.if('*.html', $.htmlmin({
        collapseWhitespace: true
    })))
    .pipe($.if('index_dev.html', $.rename('index.html')))
    .pipe(gulp.dest('./app'));
于 2017-03-09T09:45:44.760 に答える