2017-01-10 52 views
0

我有,我管理我的請求的web服務,實際上我已經在這個服務中定義的Web服務URL服務訪問gulpfile變量我經常忘記評論並取消註釋URLbase()上的路徑。咕嘟咕嘟從AngularJS服務

有什麼辦法可以在gulpfile.js上做到這一點?

在我gulpfile.js我有兩個不同的任務,以構建用於開發或生產,我認爲這是很好的,如果我能做到這一點的管理有:

gulp.task('build-development', function (done) 
{ 
    config.minify = false; 

    var tasks = ['html', 'resources', 'assets', 'sass', 'js', 'vendors']; 
    seq('clean', tasks, done); 
}); 

gulp.task('build-production', function (done) 
{ 
    config.minify = true; 

    var tasks = ['html', 'resources', 'assets', 'sass', 'js', 'vendors']; 
    seq('clean', tasks, function() { 
     notifier.notify({ title: 'Project publishment', message: 'Done' }); 
    }); 
}); 

我已經嘗試過在我gulpfile.js創建一個變量在AngularJS文件中訪問它,但我得到一個錯誤,說該變量沒有被定義。

回答

1

在你的web服務使用的佔位符:

var URLbase = function() 
{ 
    return "URL_BASE_FOR_WEBSERVICE"; 
} 

兩個網址添加到您的config對象:

gulp.task('build-development', function (done) 
{ 
    config.minify = false; 
    config.urlBaseForWebService = "http://localhost/MyProject/Service.svc/"; 

    var tasks = ['html', 'resources', 'assets', 'sass', 'js', 'vendors']; 
    seq('clean', tasks, done); 
}); 

gulp.task('build-production', function (done) 
{ 
    config.minify = true; 
    config.urlBaseForWebService = "http://myproject.link.pt/Service/Service.svc/"; 

    var tasks = ['html', 'resources', 'assets', 'sass', 'js', 'vendors']; 
    seq('clean', tasks, function() { 
     notifier.notify({ title: 'Project publishment', message: 'Done' }); 
    }); 
}); 

最後在js任務使用gulp-replaceconfig.urlBaseForWebService值來代替URL_BASE_FOR_WEBSERVICE佔位符:

var replace = require('gulp-replace'); 

gulp.task('js', function() { 
    return gulp.src('src/js/**/*.js') 
    .pipe(replace(/URL_BASE_FOR_WEBSERVICE/, config.urlBaseForWebService)) 
    .pipe(gulp.dest('dist/js')); 
}); 
+0

真的很不錯的解決方案。完美的作品!非常感謝 – Ninita