Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/max-mapper/electron-spawn

easy way to run code inside of a headless electron window from the CLI
https://github.com/max-mapper/electron-spawn

Last synced: about 1 month ago
JSON representation

easy way to run code inside of a headless electron window from the CLI

Awesome Lists containing this project

README

        

# electron-spawn

run code easily inside of headless electron (chromium) windows from the command line

## usage

```
$ npm i electron-prebuilt -g
$ npm i electron-spawn -g
$ echo "console.log('hello')" > foo.js
$ electron-spawn foo.js
```

you can also export a function that takes arguments to get all the arguments passed in to your program:

```
$ echo "module.exports = function (args) { console.log(args) }" > foo.js
$ electron-spawn foo.js bar baz
# outputs ['bar', 'baz']
```

or you can use `process.argv` like an ordinary node program:

```
$ echo 'console.log(process.argv.slice(2))' > hello.js
$ electron-spawn hello.js beep boop
# outputs: ['beep', 'boop']
```

`process.stdin` works too:

``` js
process.stdin.on('data', function (buf) {
console.log('buf=', buf)
})
```

```
$ echo beep boop | electron-spawn stdin.js
buf=
```

## api

### `var spawn = require('electron-spawn')`

return a function that spawn electron

### `var electron = spawn(scriptname[, params..., execOptions])`

returns a child process running electron with the given `scriptname`

`params` are a list of arguments passed to the process

`execOptions` is an object literal to set options on how the process gets spawned

```js
var spawn = require('electron-spawn')
var electron = spawn('foo.js', 'bar', 'baz', {
detached: true
})
electron.stderr.on('data', function (data) {
console.error(data.toString())
})
electron.stdout.on('data', function (data) {
console.log(data.toString())
})
```

limitations:

- cannot automatically yet exit your program like how node does when you have no more activity on the event loop
But in your script you can call `require('electron').remote.app.quit()` to quit when it's done:
```js
module.exports = function (args) {
var img = new Image()
img.onload = function () {
require('electron').remote.app.quit()
}
img.src = 'http://example.com/cat.gif'
}
```

or you can call `process.exit()` like an ordinary node program.