gulp-rev 生成的 rev-manifest.json 跟想象的不一样,多了一层目录, 是配置的不对还是目录结构有问题, 请大家指正
目录结构
gulpfile.js
var gulp = require('gulp');
var rev = require('gulp-rev');
var revCollector = require('gulp-rev-collector');
var uglify = require('gulp-uglify');
var del = require('del');
gulp.task('clean', function () {
del(['./dist/','./rev']);
});
gulp.task('script', function() {
gulp.src(['./src/**/js/*.js'])
.pipe(uglify())
.pipe(rev())
.pipe(gulp.dest('./dist/'))
.pipe(rev.manifest())
.pipe(gulp.dest('./rev'));
});
gulp.task('rev', function() {
gulp.src(['./rev/*.json', './src/**/*.html'])
.pipe(revCollector())
.pipe(gulp.dest('./dist/'));
});
gulp.task('default', ['clean', 'script', 'rev']);
从图中可以看出js加密,md5是没有问题的但是html中的js路径和 rev-manifest.json 中的映射没有匹配上
这是json
{
"index/js/index.js": "index/js/index-db4b0af3ff.js",
"user/js/index.js": "user/js/index-fff0532ec8.js",
"user/js/user.js": "user/js/user-59f4483a57.js"
}
这是src下的html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index</title>
<link rel="stylesheet" type="text/css" href="css/index.css">
</head>
<body>
<h1>123123</h1>
<script type="text/javascript" src='js/index.js'></script>
<script type="text/javascript" src='js/user.js'></script>
</body>
</html>
在 dist 目录中的html文件没有被替换成功, json 中如果没有 /js 前的一层目录可能就能替换成功了, 应该怎么改配置呢, 去网上走了一圈没能找到解决方法
已经解决了
你好 请问是怎么解决的哦,我遇到的问题是:我用的代码是和网上面一模一样的,结果html文件总是不替换,该是怎么样还是怎么样的?
在写gulp.src(['./src/**/js/*.js'])
获取路径的时候,会将src/
后面的路径全部带上,因此在输出manifest.json
文件的时候。key值对应的文件名也会带上相应的路径.
可以使用gulp-flatten
这个插件.
gulp.task('script', function() {
gulp.src(['./src/**/js/*.js'])
.pipe(flatten())
.pipe(uglify())
.pipe(rev())
.pipe(gulp.dest('./dist/'))
.pipe(rev.manifest())
.pipe(gulp.dest('./rev'));
});