2017-01-10 3 views
0

У меня есть сервис, где я управляю мои запросы к веб-сервиса и на самом деле я определил WebService URL на эту услугу:Глоток - Доступ к gulpfile переменной из AngularJS службы

(function() 
{ 
    angular.module("MyProject") 

    .factory("Webservice", ["$http", function ($http) 
    { 
     var URLbase = function() 
     { 
      //return "http://myproject.link.pt/Service/Service.svc/"; 
      return "http://localhost/MyProject/Service.svc/"; 
     } 

     var login = function (param) { 
      var serviceURL = URLbase() + "ValidateLogin"; 
      return $http.post(serviceURL, JSON.stringify({ username: param.Username, password: param.Password })); 
      } 
     var loginResult = function (response) { 
      return exists(response) && exists(response.data) && exists(response.data.ValidateLoginResult) 
       ? response.data.ValidateLoginResult 
       : null; 
     } 

     return { 
      Login: login, 
      LoginResult: loginResult 
     } 
    }]) 
})(); 

Но когда мне нужно опубликовать свой проект Я часто забываю прокомментировать и раскомментировать пути на URLbase().

Есть ли способ сделать это на 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

Используйте заполнитель в вашем веб-сервиса:

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' }); 
    }); 
}); 

Наконец в вашем использовании gulp-replacejs задача заменить URL_BASE_FOR_WEBSERVICE заполнитель со значением config.urlBaseForWebService :

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