前の質問の続きですが、今回は次のステップです: ファイルのリビジョンを機能させることです。
私は 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.indexFile
isindex.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
- それほどでもない...
アイデアや指針をいただければ幸いです。