带有Gulp的Cordova钩子:使用cordova服务在脚本结束后生成目标文件

时间:2017-04-16 19:39:41

标签: cordova gulp hook

我正在使用Gulp和cordova项目,我使用Cordova Hook添加了一个gulp脚本:

<hook type="before_serve" src="minification.js" />

我的问题是生成的文件(all.css和all.min.css)在“cordova s​​erve”结束后写在磁盘上。因此,当此命令在“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');

1 个答案:

答案 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']);