Awesome
electron-stream
Write JavaScript to electron
, get console output back!
Example
Boot a hidden electron instance, log to stdout and clean up:
var electron = require('electron-stream');
var browser = electron();
browser.pipe(process.stdout);
browser.write('console.log(window.location.href);');
browser.write('window.close();');
browser.end();
Alternatively, use an existing http server. Note you cannot write to electron-stream when outside http server is in use.
var electron = require('electron-stream');
var http = require('http');
var server = http.createServer((req, res) => {
if (/^\/bundle\.js/.test(req.url)) {
res.setHeader('content-type', 'application/javascript');
res.setHeader('cache-control', 'no-cache');
res.end('console.log("hello");window.close();');
return;
}
if (req.url == '/') {
res.setHeader('Content-Type', 'text/html');
res.end(`<!DOCTYPE html><meta charset="utf8"><body><script src="/bundle.js"></script></body>`);
return;
}
});
server.listen(8000);
var browser = electron({ loc: 'http://localhost:8000' });
browser.pipe(process.stdout);
browser.end();
Output streams
electron-stream
lets you read all of the console output together, or split up into stdout
and stderr
:
// console.log and console.error
browser.pipe(...);
browser.stdall.pipe(...);
// console.log only
browser.stdout.pipe(...);
// console.error only
browser.stderr.pipe(...);
Installation
To install as a library:
$ npm install electron-stream
To install as a binary:
$ npm install -g electron-stream
$ echo "console.log('foo');window.close()" | electron-stream
Travis
To use electron on travis, add this to your travis.yml:
addons:
apt:
packages:
- xvfb
install:
- export DISPLAY=':99.0'
- Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- npm install
API
electron([opts])
Create a writable stream around a newly spawned electron
which forwards written data to electron
. This module bundles electron-prebuilt.
Options:
show
: Show the electron window. Defaults tofalse
.node
: Enable node integration. Defaults tofalse
.basedir
: Set this if you need to require node modules innode
modestatic
: Serve static files from this directory at/
loc
: a full url likehttp://localhost:8080/
for using an existing http server. Whenloc
is supplied, optionsnode
,basedir
, andstatic
are all ignored.sandbox
: Run electron with sandbox. Disable to emit debug information when using Docker. Defaults totrue
.
electron#stdout
electron#stderr
electron#stdall
Readable streams containing the console output. console.log
will be forwarded to .stdout
, console.error
to .stderr
. .stdall
has them both.
electron#kill()
Kill the child process.
electron#on('exit', fn)
Emitted when the underlying electron
exits. There can be multiple reasons for this:
electron#kill()
was calledwindow.close()
was sent as a script- there was a fatal error
License
MIT