1

前の質問の続きですが、今回は次のステップです: ファイルのリビジョンを機能させることです。

私は Gulp を使用した自動化に関する johnpapa のコースに取り組んでおり、別の壁にぶつかっているようです (これは、簡潔なコースを別のファイル構造に適応させようとしたときに得られるものです:P )。

基本的に、問題はリビジョンで名前が付けられたファイルを取得することですが、それらの名前は end-resulttest.jspに含まれず、理由がわかりません...

これがタスクです(簡潔にするために縮小は省略されていますが、ファイルのリビジョンでは問題なく機能します):

gulp.task('build-dev', ['inject'], function () {

    var assets = $.useref.assets({searchPath: ''});

    return gulp
        .src(config.indexFile)
        .pipe($.rename('test.jsp'))
        .pipe($.plumber())
        .pipe(assets)
        .pipe($.rev())
        .pipe(assets.restore())
        .pipe($.useref())
        .pipe($.revReplace({modifyUnreved: replaceDirectory, modifyReved: replaceDirectory}))
        .pipe(gulp.dest(config.indexLocation))
        .pipe($.rev.manifest())
        .pipe(gulp.dest(config.indexLocation))
        ;
});

injectは、css および js 参照をインデックス ファイルに挿入するタスクです (正常に動作します)、$isrequire('gulp-load-plugins')({lazy: true})およびconfig.indexFileisindex.jspです。

関数は次のreplaceDirectoryとおりです ( rev-manifest がフルパス名を生成するために使用されます):

function replaceDirectory(path) {

    var strToReplace = '../..';
    var strToReplaceWith = process.cwd().replace(/\\/g, '/') + '/WebContent';

    if (path) {
        return path.replace(strToReplace, strToReplaceWith);
    } else {
        return path;
    }
}

私のファイル構造(コースのものとは異なります)は次のとおりです。

- ModuleDir
    - dist
        - css
            - lib.css
            - app.css
        - fonts
        - images
        - js
            - lib.js
            - app.js
    - css
    - js
    - web-app
        - InnerDir
            - index.jsp
            - test.jsp
    - package.json, bower.json, etc. (all the required files)

基本的に、index.jsp は CSS および JS ライブラリおよびアプリケーション アセット用に処理され、これらは縮小され、lib.css、lib.js、app.css、および app.js に連結されます。後で、これらはすべて、test.jsp と呼ばれる index.jsp のコピーに挿入されます。

アセットの収集、連結、挿入、およびディスク上のファイル リビジョンは、見事に機能します。ファイル名の更新test.jsp- それほどでもない...

アイデアや指針をいただければ幸いです。

4

2 に答える 2

4

replaceInExtensions: '.jsp'のオプションに追加する必要がありますrevReplace()

プラグインコードを見てそれを理解する前に、私はこの問題を1日半抱えていました. 私は.phpファイルを使用しています。ドキュメントには、これを行う必要があると書かれていますが、簡単に見逃されます。

それが役に立てば幸い。

于 2015-09-29T20:33:45.077 に答える
0

それまでの間 (問題の原因を突き止めるか、誰かが助けてくれる場合を除きます)、別のキャッシュ無効化スキームを選択しました。

gulp.task('build-dev', ['inject'], function () {

    var assets = $.useref.assets({searchPath: ''});
    var cb = Math.random();

    return gulp
        .src(config.indexFile)
        .pipe($.rename('test.jsp'))
        .pipe($.plumber())
        .pipe(assets)
        .pipe(assets.restore())
        .pipe($.useref())
        .pipe($.replace('dist/css/lib.css', 'dist/css/lib.css?cb=' + cb))
        .pipe($.replace('dist/css/app.css', 'dist/css/app.css?cb=' + cb))
        .pipe($.replace('dist/js/lib.js', 'dist/js/lib.css?cb=' + cb))
        .pipe($.replace('dist/js/app.js', 'dist/js/app.js?cb=' + cb))
        .pipe(gulp.dest(config.indexLocation))
        ;
});

それは私が望む答えではありませんが、私が必要とする答えです。:)

于 2015-09-20T11:02:57.693 に答える