离子服务:如何重新运行gulp任务

时间:2015-12-05 11:35:14

标签: ionic gulp gulp-watch

我对离子和吞咽有点新意。 我能够配置ionic.project文件,以便在我第一次运行ionic serve时运行gulp任务。 但是现在当我更改文件时,我希望gulp任务会再次运行..但这不会发生..有没有办法做到这一点?

这是我的ionic.project文件:

{
  "name": "test",
  "app_id": "",
  "gulpStartupTasks": [
    "default"
  ],
  "watchPatterns": [
    "src/**/*",
    "src/*",
    "www/**/*",
    "!www/lib/**/*"
  ]
}

我预计当某些文件更改与wtachPatterns匹配时 它将调用gulp watch任务,但这不会发生(我看到离子看到文件已经改变但没有发生。)

这是gulp watch任务:

gulp.task('watch', function() {
  gulp.watch(paths.sass, ['sass']);
  gulp.watch(paths.script, ['script']);
});

基本上,任务是缩小所有JS文件和所有sass / scss文件 并且index.html正在查看缩小的文件。因此,如果未调用gulp任务,则缩小文件中没有任何更改,我需要重新运行ionic serve ..是否有正确的方法来执行此操作?

更新:

这是完整的gulpfile

var gulp = require('gulp');
var gutil = require('gulp-util');
var bower = require('bower');
require('require-dir')('./gulp/tasks');


var paths = {
  sass: ['./scss/**/*.scss'],
  style: ['./src/**/*.scss'],
  script: ['./src/app.js'],
  html:['./src/*.html']
};

gulp.task('default', ['sass', 'script','watch', 'html', 'style']);


gulp.task('watch', function() {
  gulp.watch(paths.sass, ['sass']);
  gulp.watch(paths.script, ['script']);
});

gulp.task('install', ['git-check'], function() {
  return bower.commands.install()
    .on('log', function(data) {
      gutil.log('bower', gutil.colors.cyan(data.id), data.message);
    });
});

gulp.task('git-check', function(done) {
  if (!sh.which('git')) {
    console.log(
      '  ' + gutil.colors.red('Git is not installed.'),
      '\n  Git, the version control system, is required to download     Ionic.',
      '\n  Download git here:', gutil.colors.cyan('http://git-    scm.com/downloads') + '.',
      '\n  Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.'
    );
    process.exit(1);
  }
  done();
});

这是其中一个拥有实际任务的文件的示例:

var browserify = require('browserify');
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var stringify = require('stringify');

var paths = ['./src/app.js'];

gulp.task('script', function() {
  return browserify(paths, {debug: true})
    .transform(stringify(['.html']))
    .bundle()
    .pipe(source('app.js'))
    .pipe(gulp.dest('./www/js'));
});

2 个答案:

答案 0 :(得分:2)

那么问题出在./我看过了。 我删除了$('select[name="month"]').on("change", function() { var year = $('select[name="year"]').val(); if (year > 0) { $('select[name="day"]').find("option").remove(); var daysInMonth = new Date(year, $(this).val(), 0).getDate(); for (var i = 1; i <= daysInMonth; i++) { console.log(i); $('select[name="day"]').append($("<option></option>").attr("value", i).text(i)); } } }); $('select[name="month"]').trigger('change'); ,现在正在使用

答案 1 :(得分:0)

首先,你误解watchPatterns是livereload,这意味着,如果有任何文件被更改,网页将刷新。它绝对与gulp没有任何关系。

阅读详情:http://ionicframework.com/docs/cli/test.html

要通过观看来查看文件更改,请更新watch task,即

gulp.task('watch', function() {
  gulp.watch(paths.sass, ['sass']);  <-- any file in paths.sass changed will trigger `gulp sass`
  gulp.watch(paths.script, ['script']);  <-- any file in paths.script changed will trigger `gulp script`
});

因此,如果您想观看Gulp要处理的更多文件,只需添加任务并在gulp watch中观看。

哦,嘿,你只看./scss/**/*.scss./src/app.js中的文件。如果您愿意,可以添加更多。