我正在使用Gulp和cordova项目,我使用Cordova Hook添加了一个gulp脚本:
<hook type="before_serve" src="minification.js" />
我的问题是生成的文件(all.css和all.min.css)在“cordova serve”结束后写在磁盘上。因此,当此命令在“browser”子文件夹中复制文件时,它们尚未存在。我怀疑管道吞咽,但有人可以解释我的原因吗?
以下是代码:
var fs = require('fs');
var cache = require('gulp-cached');
const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');
const autoprefixer = require('gulp-autoprefixer');
const concat = require('gulp-concat');
var cleanCSS = require('gulp-clean-css');
if (fs.existsSync('./www/css/all.css')) fs.unlinkSync('./www/css/all.css');
if (fs.existsSync('./www/css/all.css.map')) fs.unlinkSync('./www/css/all.css.map');
gulp.task('autoprefixer', function() {
return gulp.src('./www/css/*.css')
.pipe(cache('autoprefixer'))
.pipe(autoprefixer({
browsers: ['> 1%','last 2 versions','Firefox ESR','iOS 8']
}))
.pipe(gulp.dest('./www/css/'));
});
gulp.task('cleanCSS', function() {
return gulp.src('./www/css/*.css')
.pipe(cache('cleanCSS'))
.pipe(sourcemaps.init())
.pipe(concat('all.css'))
.pipe(cleanCSS())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./www/css/'));
});
gulp.task('default', ['autoprefixer', 'cleanCSS']);
gulp.start('default');
答案 0 :(得分:0)
我终于用gulp-cli解决了这个问题。
我用这个替换了我的代码:
require('child_process').execSync('gulp my_task', {stdio:[0,1,2]});
我用该代码创建了一个文件gulpfile.js:
var fs = require('fs');
var cache = require('gulp-cached');
const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');
const autoprefixer = require('gulp-autoprefixer');
const concat = require('gulp-concat');
var cleanCSS = require('gulp-clean-css');
if (fs.existsSync('./www/css/all.css')) fs.unlinkSync('./www/css/all.css');
if (fs.existsSync('./www/css/all.css.map')) fs.unlinkSync('./www/css/all.css.map');
gulp.task('autoprefixer', function() {
return gulp.src('./www/css/*.css')
.pipe(cache('autoprefixer'))
.pipe(autoprefixer({
browsers: ['> 1%','last 2 versions','Firefox ESR','iOS 8']
}))
.pipe(gulp.dest('./www/css/'));
});
gulp.task('cleanCSS', function() {
return gulp.src('./www/css/*.css')
.pipe(cache('cleanCSS'))
.pipe(sourcemaps.init())
.pipe(concat('all.css'))
.pipe(cleanCSS())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./www/css/'));
});
gulp.task('my_task', ['autoprefixer', 'cleanCSS']);