-
-
Save jdavid1385/9d14ff4d1fcc02f6d720e64c6590a75b 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