Run Go commands from Node or CLI, Go env not required
Will download latest binaries locally if Go isn't already in PATH
BONUS
If you run a command and it fails with "cannot find package..." we'll try to install
said package(s). YAYS.
local install
$ npm install --save ngo
cli install
$ npm install --global ngo
usage
cli usage
$ ngo version
# go version go1.8.3 windows/amd64
# to update the `ngo` install of Go (won't update system version)
$ ngo-update
# go version go1.9.4 windows/amd64
# to set the `ngo` install of Go to a specific version (won't update system version)
$ ngo-version 1.12.0
# go version go1.12.0 windows/amd64
# to run a `go get` installed binary use this bs
$ ngo-binary golint test/fixtures/errors.go
# test\fixtures\errors.go:13:5: error var unexp should have name of the form errFoo
programmatic usage
returns promise that resolves to execa
style object without the child_process
goodies
const goOpts = {}
const ngo = require('ngo')(goOpts)
const golint = ngo.bin('golint')
ngo('version').then(console.log).catch(console.error)
/* {
stdout: 'go version go1.8.3 windows/amd64',
stderr: '',
code: 0,
failed: false,
killed: false,
signal: null,
cmd: 'C:\\Go\\bin\\go version'
} */
golint('main.go').then(console.log).catch(console.error)
api
options
)
const ngo = require('ngo')(-
Purpose: initialize
ngo
-
Arguments:
-
options [
Object
- optional]-
useLocal [
Boolean
false
] - use locally downloaded Go binaries) -
update [
Boolean
false
] - update local install to latest -
installDeps [
Boolean
true
] - attempt to install missing packages -
env [
Object
] - environment vars to set for the Go command -
goRoot [
String
] - Go root path (ex./usr/local/go
) -
goPath [
String
] - Go workspace path (ex.~/work
)
-
useLocal [
-
options [
-
Returns:
Function
(ngo
) which executes Go commands
commandArgs
, options
)
ngo(-
Purpose: - execute
go
commands -
Arguments:
-
commandArgs [
Array
|String
- required] - argument(s) to call withgo
command -
options [
Object
- optional] - same options as
child_process.spawn
- additonal options available same as
execa
-
commandArgs [
-
Returns:
Promise
which resolves toexeca
styled object
binary
)
ngo.bin(-
Purpose: - execute commands on binaries in the
GOBIN
directory -
Arguments:
-
binary [
String
] - name of binary file to be executed in returned function
-
binary [
-
Returns:
Function
(identical tongo
, but runs specified binary instead ofgo
)
ngo.env
this is a copy of ngo's process.env
with the Go environment variables added to it
License
MIT © Andrew Carpenter