【问题标题】:Gulp plugin to include/exclude line of JS code depending on task ranGulp 插件根据运行的任务包含/排除 JS 代码行
【发布时间】:2014-07-04 09:25:42
【问题描述】:

是否有任何 gulp 插件在运行时可以包含/排除一行 JavaScript。

例如,在我的一个 JS 文件中,我对本地 JSON 文件执行 HTTP GET:

// To be used for localhost
$http.get('path-to-JSON-file.json')
    .success(function (data) {
        done(data);
    })

但是当我移动到我的 .NET 服务器时,我需要这是对方法的调用:

// To be used for .NET
$http.get('/MyData/GetMyDataJson').success(function (data) {
    .success(function (data) {
        done(data);
    })

所以,我很高兴创建 2 个单独的脚本任务,一个用于 localhost 版本,一个用于 .NET。

我可以使用gulp-replace,但我真的不想将代码放在我的 gulp.js 文件中

【问题讨论】:

  • 即使有,由于维护问题,这也不是一个好习惯。
  • @AnPhan - 那么最好的方法是什么?我也在使用 Angular。
  • 也许您可以为这些使用配置文件?还是让您的任务使用开发环境变量运行代码?
  • @Oleg - 配置文件听起来是最好的方法,你能解释一下如何让配置文件与 Gulp 一起工作吗?
  • @OamPsy 角度?然后我建议gulp-ng-constant ;)

标签: javascript jquery replace gulp uglifyjs


【解决方案1】:

我会使用 Mustache 之类的东西来生成您的代码,例如:

你的主文件

$http.get('{{action_get_data}}').success(function (data) {
    .success(function(data) { 
        done(data);
})

你的 gulp 文件:

var env="node";

var data={
    "node":{"action_get_data":"path-to-JSON-file.json"}
    ".NET":{"action_get_data":"/MyData/GetMyDataJson"}
};

gulp.src("./templates/*.mustache")
    .pipe(mustache(data[env]))
    .pipe(gulp.dest("./dist"));

注意:但是,这样做有一点开销:你需要在文件中声明变量,在 gulpfile 中填充一个数组,每次都等待编译。

您也可以使用相同的代码库,只使用变量来处理不同版本的环境之间的变化。

注意2:你也可以像这样从配置文件中获取环境数据:

var data= require('data.json');

data.json

{
    "node":{"action_get_data":"path-to-JSON-file.json"}
    ".NET":{"action_get_data":"/MyData/GetMyDataJson"}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多