grunt-go-reload
v0.1.2
Published
Build and run a single instance of a go program.
Downloads
3
Readme
grunt-go-reload
Build and run a single instance of a go program.
Use this plugin in conjunction with grunt-contrib-watch
to reload your go app automatically on every code change.
Alternatively, use this plugin to build and run your go app forever using the go_reload
task.
This plugin is built on Grunt 1.0.1
but should work on earlier versions.
Getting Started
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-go-reload --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks("grunt-go-reload");
The "go_reload" task
Overview
In your project's Gruntfile, add a section named go_reload
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
go_reload: {
app: {
name: "sample-go-app",
port: 3000
}
},
});
Options
options.name
Type: String
Default value: None
A string value used in the go build
compilation step to name the output executable (using the go build -o
option). See go build -h
for more details.
options.port
Type: Number
Default value: 3000
A number assigned to the PORT
environment variable when executing your go app. Access this value in go using os.Getenv("PORT")
.
options.background
Type: Boolean
Default value: false
Use false
to make go_reload
block Grunt in order to keep it running. Use true
if configuring with grunt-contrib-watch
to reload your go app automatically on every code change. See Watch Configuration for specifics.
options.env
Type: Object
Default value: undefined
These values will be passed as environment variables when executing your go app. Access these value in go using os.Getenv(...)
. For example:
grunt.initConfig({
go_reload: {
app: {
name: "sample-go-app",
port: 3000,
env: {
GO_ENV: "development",
API_KEY: "0123456789"
}
}
},
});
Usage Examples
Basic Configuration
Use this configuration to have Grunt build and run your go app forever.
grunt.initConfig({
go_reload: {
app: {
name: "sample-go-app",
port: 3000
}
},
});
grunt.loadNpmTasks("grunt-go-reload");
grunt.registerTask("default", ["go_reload"]);
Watch Configuration
Use this configuration to have Grunt reload your go app on every code change using grunt-contrib-watch
.
grunt.initConfig({
go_reload: {
app: {
name: "sample-go-app",
port: 3000,
background: true
}
},
watch: {
options: {
atBegin: true
},
go: {
files: ["**/*.go"],
tasks: ["go_reload"]
}
}
});
grunt.loadNpmTasks("grunt-go-reload");
grunt.loadNpmTasks("grunt-contrib-watch");
grunt.registerTask("default", ["watch"]);
Contributing
This plugin was created to service a basic go web app so pull requests / issues to make this plugin work with your project are welcome!
Release History
- (March 27, 2017) v0.1.2: Add support for
env
parameter in the grunt config - (March 27, 2017) v0.1.1: Fix usage of
const
whenlet
was intended, Arrange and expand test coverage - (March 23, 2017) v0.1.0: Initial release