Gulp browser-sync - redirect API request via proxy

后端 未结 2 1272
粉色の甜心
粉色の甜心 2020-12-23 23:05

I\'m trying to redirect my API requests like this with gulp and browser-sync:

gulp.task(\'browser-sync\', function () {

   var files = [
      \'../index.ht         


        
2条回答
  •  星月不相逢
    2020-12-23 23:24

    Checkout the official documentation about using BrowserSync with Gulp. I was able to get BrowserSync up and running with a proxy on /api with no issue.

    Check to make sure nothing else is using port 8000. You can change what port BrowserSync uses via the port option when initializing BrowserSync.

    Here is the gulpfile.js I ended up with:

    npm install gulp url proxy-middleware browser-sync --save-dev

    // Include gulp
    var gulp = require('gulp');
    
    var url = require('url');
    var proxy = require('proxy-middleware');
    var browserSync = require('browser-sync'); 
    
    var paths =  {
        css: ['./**/*.css', '!./node_modules/**/*']
    };
    
    
    // browser-sync task for starting the server.
    gulp.task('browser-sync', function() {
        var proxyOptions = url.parse('http://localhost:3000/secret-api');
        proxyOptions.route = '/api';
        // requests to `/api/x/y/z` are proxied to `http://localhost:3000/secret-api/x/y/z`
    
        browserSync({
            open: true,
            port: 3000,
            server: {
                baseDir: "./",
                middleware: [proxy(proxyOptions)]
            }
        });
    });
    
    // Stream the style changes to the page
    gulp.task('reload-css', function() {
        gulp.src(paths.css)
            .pipe(browserSync.reload({stream: true}));
    });
    
    // Watch Files For Changes
    gulp.task('watch', function() {
        gulp.watch(paths.css, ['reload-css']);
    });
    
    // Default Task
    gulp.task('default', ['browser-sync', 'watch']);
    

    If you do not want to make a separate gulp task to reload/stream the changes, you can use the files option:

    browserSync({
        open: true,
        port: 3000,
        server: {
            baseDir: "./",
            middleware: [proxy(proxyOptions)]
        },
        files: paths.css
    });
    

提交回复
热议问题