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

标签 android angularjs ionic-framework gulp gulp-livereload

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

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

exports.paths = {
  src: 'src',
  dist: 'www',
  tmp: '.tmp',
  e2e: 'e2e'
};

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

我无法使用命令ionic run android --livereload as described in the doc here因为它同步了 www 文件夹(在 gulp build 之后)我有缩小的文件而不是源文件。

所以我想以某种方式混合使用 gulp serveionic run android --livereload 这两个命令,但我真的不知道如何实现.

最佳答案

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

我在我的 gulp watch 中添加了一个标志 --livereload,所以我的 /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);
    }
  });
});

使用方法:

在终端选项卡上:

ionic run android --livereload

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

gulp watch --livereload

尽情享受吧!

关于android - 基于 generator-gulp-angular 在 Ionic 项目上配置 Live Reload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540337/

相关文章:

jquery - Angular Datatables 对超链接内的文本而不是 href 进行排序

javascript - 如何检查文本框模糊事件的递归数组结构中的重复值?

ios - ionic 3 cordova ios 构建失败 'google/protobuf/Api.pbobjc.h' 找不到文件

android - 如何为具有不同功能的Android应用程序添加多个主页快捷方式

c# - Xamarin ListView 显示 SQLite 数据库中的项目 C# Android

angularjs - 按日期排序 AngularJS ng-repeat

Angular HttpClient 授权 header 已创建但消失了

java - Android进度条一直在转

java - Android 对话框 setMultiChoiceItems/arraylist 删除不工作

Android 在 cordova 中打开带有 html 内容的电子邮件客户端