[英]Gulp inject ignores css if the dist folder was first cleaned
我有一个简单的gulp脚本。 流程为:
问题是,如果我先删除dist文件夹,则注入仅适用于.js文件。 但是,如果我跳过dist文件夹的清理操作,它将创建正确的.html(因为index.html中同时存在.js和.css)。 有没有人遇到过这个问题? 如果是这样,您如何解决? 我猜想它与流水线有关。
Gulp版本:“ ^ 3.9.1”
var gulp = require('gulp');
var ts = require('gulp-typescript');
var minify = require('gulp-minify');
var inject = require('gulp-inject');
var del = require('del');
gulp.task('default', ['clean'], function () {
gulp.start('scripts')
});
gulp.task('clean', function (cb) {
del(['dist'], cb)
});
gulp.task('move', function () {
console.log('-- gulp is running task "move"');
gulp.src(['app/**/*.html', 'app/**/*.css'])
.pipe(gulp.dest('dist'));
});
gulp.task('compile', ['move'], function () {
console.log('-- gulp is running task "compile"');
return gulp.src('app/**/*.ts')
.pipe(ts({
noImplicitAny: true,
out: 'app.js'
}))
.pipe(gulp.dest('dist'));
});
gulp.task('compress', ['compile'], function () {
console.log('-- gulp is running task "compress"');
gulp.src('dist/**/*.js')
.pipe(minify({
ext: {
src: '-debug.js',
min: '.js'
},
noSource: true
}))
.pipe(gulp.dest('dist'))
});
gulp.task('scripts', ['compress'], function () {
console.log('-- gulp is running task "scripts"');
var target = gulp.src('dist/index.html');
var sources = gulp.src(['dist/**/*.js', 'dist/**/*.css'], {read: false});
return target.pipe(inject(sources, {relative: true}))
.pipe(gulp.dest('dist'));
});
您正在遇到竞争状况,因为您没有在几个地方正确地发出异步完成信号:
del
不cb
,它返回Promise 。 您需要从任务中返回该Promise:
gulp.task('clean', function () {
return del(['dist']);
});
还需要从任务中返回流。 您没有在move
和compress
任务中这样做,这意味着(除了别的以外)意味着gulp-inject
可能会在将所有.css
文件复制到dist/
之前运行。
gulp.task('move', function () {
console.log('-- gulp is running task "move"');
return gulp.src(['app/**/*.html', 'app/**/*.css'])
.pipe(gulp.dest('dist'));
})
gulp.task('compress', ['compile'], function () {
console.log('-- gulp is running task "compress"');
return gulp.src('dist/**/*.js')
.pipe(minify({
ext: {
src: '-debug.js',
min: '.js'
},
noSource: true
}))
.pipe(gulp.dest('dist'));
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.