With the little introduction we gave about Gulp in the preceding section, we are going to write a gulpfile for telling the computer to execute a few tasks.
I install Gulp and Gulp-shell using npm
:
npm install gulp gulp-shell
After this, create a gulpfile.js
in the root directory of the project. Here, it is github.com/src/narenaryan/romanserver
. Now add this content to gulpfile.js
. First, whenever a file changes, install binary task gets executed. Then, the supervisor will be restarted. The watch task looks for any file change and executes the preceding tasks. We are also ordering the tasks so that they occur one after the other synchronously. All of these tasks are Gulp tasks and can be defined by the gulp.task
function. It takes two arguments with task name, task. sell.task
allows Gulp to execute system commands:
var gulp = require("gulp"); var shell = require('gulp-shell'); // This compiles new binary with source change gulp.task("install-binary", shell.task([ 'go install github.com/narenaryan/romanserver' ])); // Second argument tells install-binary is a deapendency for restart-supervisor gulp.task("restart-supervisor", ["install-binary"], shell.task([ 'supervisorctl restart myserver' ])) gulp.task('watch', function() { // Watch the source code for all changes gulp.watch("*", ['install-binary', 'restart-supervisor']); }); gulp.task('default', ['watch']);
Now, if you run the gulp
command in the source
directory, it starts watching your source code changes:
gulp
Now, if we modify the code, then the code is compiled, installed, and the server restarted in a flash:
In the gulpfile, we are performing the following instructions:
- Import Gulp and Gulp-shell.
- Create tasks with
shell.task
as the function to execute. shell.task
can execute a command-line instruction. Keep your shell commands inside that function.- Add a watch task for watching source files. The task list will be executed when files are modified.
- Create a default task for running. Add a watch to it.
Gulp is a great tool for these kinds of use cases. So, please go through the official documentation of Gulp at http://gulpjs.com/.