Created
January 24, 2016 05:52
-
-
Save andyperlitch/7385331afacedac0b0d2 to your computer and use it in GitHub Desktop.
Example gulp setup with a proxy server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 'use strict'; | |
| var path = require('path'); | |
| var gulp = require('gulp'); | |
| var conf = require('./conf'); | |
| var fs = require('fs'); | |
| var browserSync = require('browser-sync'); | |
| var browserSyncSpa = require('browser-sync-spa'); | |
| var util = require('util'); | |
| var proxyMiddleware = require('http-proxy-middleware'); | |
| function browserSyncInit(baseDir, browser) { | |
| browser = browser === undefined ? 'default' : browser; | |
| var routes = null; | |
| if(baseDir === conf.paths.src || (util.isArray(baseDir) && baseDir.indexOf(conf.paths.src) !== -1)) { | |
| routes = { | |
| '/bower_components': 'bower_components' | |
| }; | |
| } | |
| var server = { | |
| baseDir: baseDir, | |
| routes: routes | |
| }; | |
| /* | |
| * You can add a proxy to your backend by uncommenting the line below. | |
| * You just have to configure a context which will we redirected and the target url. | |
| * Example: $http.get('/users') requests will be automatically proxified. | |
| * | |
| * For more details and option, https://github.com/chimurai/http-proxy-middleware/blob/v0.9.0/README.md | |
| */ | |
| server.middleware = []; | |
| server.middleware.push(proxyMiddleware('/v1', {target: 'http://0.0.0.0:3000', changeOrigin: true})); | |
| server.middleware.push(function (req, res, next) { | |
| if (req.url.indexOf('/mock/') !== 0) { | |
| next(); | |
| return; | |
| } | |
| var filename = path.resolve(__dirname, '..', 'mock', req.url.replace(/^\/mock\//, '')); | |
| res.setHeader('Content-Type', 'application/json'); | |
| fs.createReadStream(filename).pipe(res); | |
| }); | |
| browserSync.instance = browserSync.init({ | |
| startPath: '/', | |
| server: server, | |
| browser: browser, | |
| ui: { | |
| port: 4001 | |
| }, | |
| port: 4000 | |
| }); | |
| } | |
| browserSync.use(browserSyncSpa({ | |
| selector: '[ng-app]'// Only needed for angular apps | |
| })); | |
| gulp.task('serve', ['watch'], function () { | |
| browserSyncInit([path.join(conf.paths.tmp, '/serve'), conf.paths.src]); | |
| }); | |
| gulp.task('serve:dist', ['build'], function () { | |
| browserSyncInit(conf.paths.dist); | |
| }); | |
| gulp.task('serve:e2e', ['inject'], function () { | |
| browserSyncInit([conf.paths.tmp + '/serve', conf.paths.src], []); | |
| }); | |
| gulp.task('serve:e2e-dist', ['build'], function () { | |
| browserSyncInit(conf.paths.dist, []); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment