Gulp任务创建main.js的DEV和PROD版本

时间:2014-06-25 12:56:53

标签: javascript requirejs gulp

我是Gulp的新手,并且一直在玩gulp-minifygulp-uglify来通过gulp-requirejs创建一个整体的main.js文件。

但是,我需要创建这个main.js文件的两个版本,一个用于我的DEV环境,另一个用于PROD。

原因是,在某些.js文件中,我列出了网址,例如:

currentPage == '/products/chairs.html'

但是,将这些html文件移动到我的.Net结构中时,实际的URL是:

currentPage == 'goodsandservices/products/our-chairs.html'

我目前的rJS任务如下:

gulp.task('rjs', function() {

  rjs({
        baseUrl: config.src.js,
        out: 'main.js',
        name: 'main',
        mainConfigFile: config.src.js + '/main.js',
        exclude: [ 'angular']
    })
    .pipe(prod ? uglify({ mangle: false, compress: { drop_console: true } }) : gutil.noop())
    .pipe(gulp.dest(config.dest.js))
});

我尝试过使用gulp-replace,并将我的rjs任务更新为:

gulp.task('rjs', function() {

  rjs({
        baseUrl: config.src.js,
        out: 'main.js',
        name: 'main',
        mainConfigFile: config.src.js + '/main.js',
        exclude: [ 'angular']
    })
    .pipe(prod ? uglify({ mangle: false, compress: { drop_console: true } }) : gutil.noop())
            .pipe(replace(/NETStructure/g, 'goodsandservices'))
    .pipe(gulp.dest(config.dest.js))
});

在我的.js文件中,我已将网址更新为:

currentPage == /NETStructure/g'/products/chairs.html'

然而,这似乎没有用。

1 个答案:

答案 0 :(得分:1)

我建议你将这些字符串保存在一个对象中,并为同一个对象提供两个不同的文件,例如:

<强> constants.dev.js

var constants = {
    chairs: '/products/chairs.html'
};

<强> constants.prod.js

var constants = {
    chairs: 'goodsandservices/products/our-chairs.html'
};

然后你只需要包含正确的文件(或包含在闭包中的连接)和:

currentPage == constants.chairs