Gulp插件包括/排除行JS代码取决于任务运行

Gulp plugin to include/exclude line of JS code depending on task ran

本文关键字:代码 取决于 任务 运行 JS 插件 包括 排除 Gulp      更新时间:2023-09-26

有没有在运行时可以包含/排除一行JavaScript的gulp插件

例如,在我的一个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);
    })

所以,我很高兴创建两个独立的脚本任务,一个用于本地主机版本,一个用于。net。

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

我会使用像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"}
}