电子申请的实时重新加载
Live reload for electron application
我想使用 VScode + Gulp + Electron 的组合来构建应用程序。开发工作流程的一个很好的功能是向我的 Gulp 监视任务添加实时重新加载任务,以便在每次更改时重新加载 Electron 应用程序。
知道如何实现吗?
非常感谢您的帮助。
我能够通过 gulp-livereload
插件实现这一点。这是仅用于 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
尽管这已经是 answered/accepted,但值得一提的是,我还设法让它与 electron-connect
一起工作
还有一种方法可以使用 gulp-webserver(我 运行 跨越这个 post 的原因),并且不需要 gulp-livereload。忽略 react-generator 这是一个单独的任务,它会执行我的反应 t运行sforms。不用说,这个任务启动网络服务器,观察变化,运行生成器,然后重新加载这些变化。
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>
不是专门针对 Gulp,但有一个简单的 Electron 插件就是为此而设计的(在进行更改后重新加载应用程序):electron-reload
只需添加包:
$ npm install electron-reload --save-dev
并将以下行添加到 /main.js 文件的顶部:
require('electron-reload')(__dirname)
我发现最简单的方法是使用electron-reloader,安装后,只需将以下代码粘贴到应用程序入口文件(通常命名为main.js
)的顶部,就可以了全部设置:
const { app } = require('electron')
app.isPackaged || require('electron-reloader')(module)
我想使用 VScode + Gulp + Electron 的组合来构建应用程序。开发工作流程的一个很好的功能是向我的 Gulp 监视任务添加实时重新加载任务,以便在每次更改时重新加载 Electron 应用程序。
知道如何实现吗?
非常感谢您的帮助。
我能够通过 gulp-livereload
插件实现这一点。这是仅用于 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
尽管这已经是 answered/accepted,但值得一提的是,我还设法让它与 electron-connect
一起工作还有一种方法可以使用 gulp-webserver(我 运行 跨越这个 post 的原因),并且不需要 gulp-livereload。忽略 react-generator 这是一个单独的任务,它会执行我的反应 t运行sforms。不用说,这个任务启动网络服务器,观察变化,运行生成器,然后重新加载这些变化。
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>
不是专门针对 Gulp,但有一个简单的 Electron 插件就是为此而设计的(在进行更改后重新加载应用程序):electron-reload
只需添加包:
$ npm install electron-reload --save-dev
并将以下行添加到 /main.js 文件的顶部:
require('electron-reload')(__dirname)
我发现最简单的方法是使用electron-reloader,安装后,只需将以下代码粘贴到应用程序入口文件(通常命名为main.js
)的顶部,就可以了全部设置:
const { app } = require('electron')
app.isPackaged || require('electron-reloader')(module)