基于generator-gulp-angular在Ionic项目上配置Live Reload

man*_*nza 5 android angularjs gulp ionic-framework gulp-livereload

我有一个Ionic 1.3.1项目,其架构基于旧的但是金色的generator-gulp-angular,我想Live Reload在设备(Android)上启用它.

我的gulp配置路径如下所示:

exports.paths = {
  src: 'src',
  dist: 'www',
  tmp: '.tmp',
  e2e: 'e2e'
};
Run Code Online (Sandbox Code Playgroud)

这意味着要在我使用的浏览器中运行项目,gulp serve并在我使用的Android设备中运行gulp build && ionic run android.

我不能使用ionic run android --livereload 此处doc中描述的命令,因为它同步www文件夹(在a之后gulp build)我有缩小文件而不是源文件.

所以我想以某种方式混淆这两个命令gulp serve,ionic run android --livereload但真诚地我不知道如何实现这一点.

man*_*nza 3

我解决了更新我的gulp watch任务的问题,每次有更改时它都会在gulp build命令ionic run android --livereload运行时运行。

--livereload我向我的 中添加了一个标志gulp watch,所以我的/gulp/watch.js文件如下所示:

gulp.task('watch', ['inject'], function () {

  var livereload = process.argv.length === 4 && process.argv[3] === '--livereload';

  gulp.watch([path.join(conf.paths.src, '/*.html'), 'bower.json'], ['inject-reload']);

  gulp.watch([
    path.join(conf.paths.src, '/app/**/*.css'),
    path.join(conf.paths.src, '/app/**/*.scss'),
    path.join(conf.paths.src, '/scss/*.scss')
  ], function(event) {
    if (livereload) {
      gulp.start('build');
    } else {
      if(isOnlyChange(event)) {
        gulp.start('styles-reload');
      } else {
        gulp.start('inject-reload');
      }
    }
  });

  gulp.watch(path.join(conf.paths.src, '/app/**/*.js'), function(event) {
    if (livereload) {
      gulp.start('build');
    } else {
      if(isOnlyChange(event)) {
        gulp.start('scripts-reload');
      } else {
        gulp.start('inject-reload');
      }
    }
  });

  gulp.watch(path.join(conf.paths.src, '/app/**/*.html'), function(event) {
    if (livereload) {
      gulp.start('build');
    } else {
      browserSync.reload(event.path);
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

如何使用:

在终端选项卡上:

ionic run android --livereload
Run Code Online (Sandbox Code Playgroud)

并且,在另一个终端选项卡上:

gulp watch --livereload
Run Code Online (Sandbox Code Playgroud)

享受!