Живая перезагрузка для электронного приложения
Я хочу использовать комбинацию VScode + Gulp + Electron для создания приложения. Хорошей особенностью рабочего процесса разработки было бы добавить задачу живой перезагрузки в мою задачу Gulp, чтобы перезагрузить приложение Electron при каждом изменении.
Любая идея, как достичь этого?
Ваша помощь очень ценится.
Ответы
Ответ 1
Я смог достичь этого с помощью плагина gulp-livereload
. Вот код для ТОЛЬКО для CSS. Это то же самое для всего остального.
var gulp = require ('gulp'),
run = require('gulp-run'),
livereload = require('gulp-livereload'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
rename = require('gulp-rename'),
minifycss = require('gulp-minify-css'),
jshint = require('gulp-jshint'),
autoprefixer = require('gulp-autoprefixer'),
rimraf = require('gulp-rimraf');
var cssSources = [
'app/components/css/main.css',
];
gulp.task('css', function(){
gulp.src(cssSources)
.pipe(concat('main.css'))
.pipe(autoprefixer({browsers: ['last 2 versions', 'ie 10']}))
.pipe(gulp.dest('app/public/styles'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('app/public/styles'))
.pipe(livereload());
})
gulp.task('watch', function(){
livereload.listen();
gulp.watch(cssSources, ['css'])
})
gulp.task('run', ['build'], function() {
return run('electron .').exec();
});
gulp.task('default', ['watch', 'run']);
Livereload в настольном приложении является удивительным.
Убедитесь, что вы добавили
<script src="http://localhost:35729/livereload.js"></script>
на ваш index.html
Ответ 2
Даже если это уже было принято/принято, стоит упомянуть, что мне также удалось заставить его работать с electron-connect
Ответ 3
Существует также способ сделать это с помощью gulp -webserver (причина, по которой я столкнулся с этим сообщением), и не требует gulp -livereload. Игнорируйте реактивный генератор, который является отдельной задачей, которая меняет мои реакции. Излишне говорить, что эта задача запускает веб-сервер, следит за изменениями, запускает генератор, а затем перезагружает эти изменения.
var gulp = require('gulp'),
electron = require('electron-prebuilt'),
webserver = require('gulp-webserver'),
gulp.task(
'run',
['react-generator'], // Secondary task, not needed for live-reloading
function () {
gulp.watch('./app/react/*.jsx', ['react-generator']);
gulp.src('app')
.pipe(webserver({
port: 8123,
fallback: "index.html",
host: "localhost",
livereload: {
enable: true,
filter: function(fileName) {
if (fileName.match(/.map$/)) {
return false;
} else {
return true;
}
}
},
}));
});
Как отмечено в предыдущем ответе, вам нужно добавить в индексный файл следующее: оно будет действовать так, как будто оно не работает для Electron, но для браузеров.
<script src="http://localhost:35729/livereload.js"></script>