Skip to content

juliangruber/electron-stream

Repository files navigation

electron-stream

Write JavaScript toelectron,get console output back!

downloads

Example

Boot a hidden electron instance, log to stdout and clean up:

varelectron=require('electron-stream');

varbrowser=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.

varelectron=require('electron-stream');
varhttp=require('http');

varserver=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);
varbrowser=electron({loc:'http://localhost:8000'});
browser.pipe(process.stdout);
browser.end();

Output streams

electron-streamlets you read all of the console output together, or split up intostdoutandstderr:

// 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

Source.

API

electron([opts])

Create a writable stream around a newly spawnedelectronwhich forwards written data toelectron.This module bundleselectron-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 innodemode
  • static:Serve static files from this directory at/
  • loc:a full url likehttp://localhost:8080/for using an existing http server. Whenlocis supplied, optionsnode,basedir,andstaticare 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.logwill be forwarded to.stdout,console.errorto.stderr..stdallhas them both.

electron#kill()

Kill the child process.

electron#on('exit', fn)

Emitted when the underlyingelectronexits. There can be multiple reasons for this:

  • electron#kill()was called
  • window.close()was sent as a script
  • there was a fatal error

License

MIT