首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Gulp文件中以编程方式获取BrowserSync外部URL,这样我就可以将它传递给外部节点脚本?

在Gulp文件中以编程方式获取BrowserSync外部URL,这样我就可以将它传递给外部节点脚本?
EN

Stack Overflow用户
提问于 2016-12-01 16:44:21
回答 1查看 3.4K关注 0票数 2

我希望能够将browserSync外部URL作为参数发送给我的gulp文件中的外部节点脚本。如何通过browserSync对象(或其他方式)获取该外部URL?

代码语言:javascript
复制
var gulp = require('gulp');
var shell = require('gulp-shell');
var browserSync = require('browser-sync').create();

gulp.task('default', ['browser-sync', 'config']);

gulp.task('browser-sync', function() {
    browserSync.init({
        proxy: "localhost:8024",
        open: "external"
    });
});

gulp.task('config', shell.task([
    "node scripts/someNodeScript.js browserSync.externalURL"
]));

更新

基于下面@sven-shoenung的出色回答,我稍微修改了他的解决方案,并成功地使用了以下方法:

代码语言:javascript
复制
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var spawn = require('child_process').spawn;

var externalUrl;

var browserSyncDone = function () {
    spawn('node', ['scripts/someNodeScript.js', externalUrl], {stdio:'inherit'});
};

gulp.task('default', ['browser-sync']);

gulp.task('browser-sync', function() {
    browserSync.init({
        proxy: "localhost:8024",
        open: "external"
    }, function() {
        externalUrl = browserSync.getOption('urls').get('external');
        browserSyncDone();
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-01 18:08:37

您可以使用browserSync.getOptions('urls')获取所有访问URL的地图。它返回如下内容:

代码语言:javascript
复制
Map { 
  "local": "http://localhost:3000", 
  "external": "http://192.168.0.125:3000", 
  "ui": "http://localhost:3001",  
  "ui-external": "http://192.168.0.125:3001" 
}

注意,只有在成功初始化 browser-sync之后才有可用的browser-sync,因此您需要将回调函数传递给browserSync.init(),否则您将试图过早地获得该值。

出于同样的原因,您将无法使用gulp-shellshell.task()将在 browser-sync初始化之前设置为,因此browserSync.getOptions('urls')尚未可用。

我建议您使用标准的nodejs child_process.spawn()

代码语言:javascript
复制
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var spawn = require('child_process').spawn;

var externalUrl;

gulp.task('default', ['browser-sync', 'config']);

gulp.task('browser-sync', function(done) {
  browserSync.init({
    proxy: "localhost:8024",
    open: "external"
  }, function() {
    externalUrl = browserSync.getOption('urls').get('external');
    done();
  });
});

gulp.task('config', ['browser-sync'], function(done) {
  spawn('node', ['scripts/someNodeScript.js', externalUrl], {stdio:'inherit'}).on('close', done);
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40916025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档