UNPKG

gulp-develop-server

Version:

run node.js server and automatically restart for your development.

268 lines (196 loc) 6.53 kB
gulp-develop-server =================== > run your node.js server and automatically restart with gulp. [![Build Status][travis-image]][travis-url] [![Dependency Status][deps-image]][deps-url] [![Test Coverage][coveralls-image]][coveralls-url] [![Npm Modules][npm-image]][npm-url] [![MIT Licensed][license-image]][license-url] [travis-image]: https://img.shields.io/travis/narirou/gulp-develop-server.svg?style=flat-square [travis-url]: https://travis-ci.org/narirou/gulp-develop-server [coveralls-image]: https://img.shields.io/coveralls/narirou/gulp-develop-server.svg?style=flat-square [coveralls-url]: https://coveralls.io/r/narirou/gulp-develop-server [npm-image]: http://img.shields.io/npm/v/gulp-develop-server.svg?style=flat-square [npm-url]: https://www.npmjs.org/package/gulp-develop-server [deps-image]: https://img.shields.io/david/shinnn/gulp-gh-pages.svg?label=deps&style=flat-square [deps-url]: https://david-dm.org/narirou/gulp-develop-server [license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square [license-url]: ./LICENSE gulp-develop-server is a development assistant for node.js server that runs the process and automatically restarts it when a file is modified. installation ------------ ```bash npm install gulp-develop-server --save-dev ``` usage ----- ```javascript var gulp = require( 'gulp' ), server = require( 'gulp-develop-server' ); // run server gulp.task( 'server:start', function() { server.listen( { path: './app.js' } ); }); // restart server if app.js changed gulp.task( 'server:restart', function() { gulp.watch( [ './app.js' ], server.restart ); }); ``` api --- ###server.listen( options[, callback] ) **options {Object}** - `path` - type: {String} - example: `'./your_node_app.js'` - Your node application path. This option is required. - `env` - type: {Object} - default: `{ NODE_ENV: 'development' }` (extends current `process.env`) - example: `{ PORT: 3000, NODE_ENV: 'production' }` - Environment settings of your server. - `args` - type: {Array} - your application's arguments - `execArgv` - type: {Array} - example: `[ '--harmony' ]` - Run node process with this options. - `delay` - type: {Number} - default: `600` - If this plugin does not receive an error from the server after `options.delay` seconds, assumes the server listening success. - This option needs to adjust according to your application's initialize time. - If this option set `0`, it will only check `successMessage`. - `successMessage` - type: {RegExp} - default: `/^[Ss]erver listening/` - If your application send the specific message by `process.send` method, this plugin assumes the server listening success. - `errorMessage` - type: {RegExp} - default: `/[Ee]rror:/` - If this plugin receives the specific error message that matched this RegExp at start-up, assumes the server has error. - `killSignal` - type: {String} - default: `SIGTERM` **callback( error )** ###server.restart( [callback] ) / server.changed( [callback] ) **callback( error )** ###server( [options] ) Create a `Transform` stream. Restart the server at once when this stream gets files. ###server.kill( [signal, callback] ) Send kill signal to the server process. **signal {String}** **callback( error )** ###server.reset( [signal, callback] ) Send kill signal to the server process and reset the options to default. **signal {String}** **callback( error )** more examples ------------- ####with [gulp-livereload](https://github.com/vohof/gulp-livereload): ```javascript var gulp = require( 'gulp' ), server = require( 'gulp-develop-server' ), livereload = require( 'gulp-livereload' ); var options = { path: './apps/app.js' }; var serverFiles = [ './apps/app.js', './routes/*.js' ]; gulp.task( 'server:start', function() { server.listen( options, livereload.listen ); }); // If server scripts change, restart the server and then livereload. gulp.task( 'default', [ 'server:start' ], function() { function restart( file ) { server.changed( function( error ) { if( ! error ) livereload.changed( file.path ); }); } gulp.watch( serverFiles ).on( 'change', restart ); }); ``` ####with [BrowserSync](https://github.com/BrowserSync/browser-sync): ```javascript var gulp = require( 'gulp' ), server = require( 'gulp-develop-server' ), bs = require( 'browser-sync' ); var options = { server: { path: './apps/app.js', execArgv: [ '--harmony' ] }, bs: { proxy: 'http://localhost:3000' } }; var serverFiles = [ './apps/app.js', './routes/*.js' ]; gulp.task( 'server:start', function() { server.listen( options.server, function( error ) { if( ! error ) bs( options.bs ); }); }); // If server scripts change, restart the server and then browser-reload. gulp.task( 'server:restart', function() { server.restart( function( error ) { if( ! error ) bs.reload(); }); }); gulp.task( 'default', [ 'server:start' ], function() { gulp.watch( serverFiles, [ 'server:restart' ] ) }); ``` ####use as a stream: ```javascript var gulp = require( 'gulp' ), server = require( 'gulp-develop-server' ), bs = require( 'browser-sync' ), coffee = require( 'gulp-coffee' ); var options = { server: { path: './apps/app.js', execArgv: [ '--harmony' ] }, bs: { proxy: 'http://localhost:3000' } }; var serverCoffee = [ './src/*.coffee' ]; gulp.task( 'server:start', function() { server.listen( options.server, function( error ) { if( ! error ) bs( options.bs ); }); }); // If server side's coffee files change, compile these files, // restart the server and then browser-reload. gulp.task( 'server:restart', function() { gulp.src( serverCoffee ) .pipe( coffee() ) .pipe( gulp.dest( './apps' ) ) .pipe( server() ) .pipe( bs.reload({ stream: true }) ); }); gulp.task( 'default', [ 'server:start' ], function() { gulp.watch( serverCoffee, [ 'server:restart' ] ); }); ``` thanks ------ [@pronebird](https://github.com/pronebird) [@vkareh](https://github.com/vkareh) [@chimerast](https://github.com/chimerast) [@silverbp](https://github.com/silverbp) [@tomxtobin](https://github.com/tomxtobin)