react-crossroads
Version:
Client side router for web applications built with React and utilizing the Flux architecture. The backing routing engine is CrossroadsJs.
89 lines (66 loc) • 2.56 kB
text/coffeescript
gulp = require 'gulp'
util = require 'gulp-util'
path = require 'path'
mocha = require 'gulp-mocha'
exit = require 'gulp-exit'
cjsx = require 'gulp-cjsx'
plumber = require 'gulp-plumber'
rimraf = require 'gulp-rimraf'
webpack = require 'webpack'
WebpackDevServer = require 'webpack-dev-server'
Ports =
examples: 3000
examplesWebPack: 3001
integration: 3002
integrationWebPack: 3003
addressForPort = (port) ->
"http://localhost:#{port}"
runServer = (config, contentFolder, startServer, appPort, webPackPort, done) ->
webpackServerAddress = addressForPort webPackPort
webpackServer = new WebpackDevServer webpack(config),
contentBase: path.join __dirname, contentFolder
stats:
colors: true
hot: true
server = startServer
server:
port: appPort
webpackServerAddress: webpackServerAddress
webpackServer.listen webPackPort, "localhost", (err) ->
throw new util.PluginError "WebPack Server Startup", err if err
util.log "[WebPack Server Startup]", "#{webpackServerAddress}/webpack-dev-server"
done()
gulp.task 'build', ['clean'], ->
gulp.src './src/**/*'
.pipe plumber()
.pipe cjsx bare: true
.pipe gulp.dest('./lib')
gulp.task 'clean', ->
gulp.src('./lib', {read: false})
.pipe plumber()
.pipe rimraf()
gulp.task 'test-ci', ['test'] #, 'integration-test'] # TODO: Punting on integration tests on travis for now
reporter = 'spec'
gulp.task 'test', ->
require 'coffee-react/register'
gulp.src './test/main.coffee', {read: false}
.pipe mocha reporter: reporter
gulp.task 'integration-test-ci', ->
runSequence = require 'run-sequence'
runSequence 'integration-test-server', 'integration-test'
gulp.task 'integration-test', ->
gulp.src './integration-test/integration-test.coffee', {read: false}
.pipe mocha reporter: reporter
gulp.task 'integration-test-server', (done) ->
config = require './webpack.integration.test'
startServer = require('./integration-test/server').startServer
runServer config, 'integration-test', startServer, Ports.integration, Ports.integrationWebPack, done
gulp.task 'examples', (done) ->
config = require './webpack.examples'
startServer = require('./examples/server').startServer
runServer config, 'examples-build', startServer, Ports.examples, Ports.examplesWebPack, done
gulp.task 'test-watch', ->
reporter = 'min'
gulp.watch ['src/**', 'test/**'], ['test']
gulp.task 'integration-test-watch', ['integration-test-server'], ->
gulp.watch ['src/**', 'integration-test/**'], ['integration-test']