【问题标题】:Is there a way to change current gulp base context?有没有办法改变当前的 gulp 基础上下文?
【发布时间】:2015-05-31 03:17:56
【问题描述】:

有没有办法在我的gulpfile.js 中更改 gulp 上下文?

现在我在我所有的gulp.src 前面加上我想要的位置。但是有没有办法在全球范围内改变这种情况?

这是我当前的代码:

var base = '../';
gulp.task('copy', function() {
   gulp.src(base + 'sampleFile.js').pipe(gulp.dest('dist/'));
});

gulp.task('clean', function() {
   del.sync([base + options.dist]);
});

这就是我正在寻找的东西:

gulp.base('../', function() {
    gulp.task('copy', function() {
       gulp.src('sampleFile.js').pipe(gulp.dest('dist/'));
    });

    gulp.task('clean', function() {
       del.sync([options.dist]);
    });
});

【问题讨论】:

  • 您是否尝试过查看:stackoverflow.com/questions/27236437/… -- 它的方法有些不同,但应该这样做
  • 感谢@ddprrt,在那篇文章中有对process.chdir 的引用,它确实解决了我的问题!

标签: javascript gulp


【解决方案1】:

根据@ddprrt 的评论,我找到了解决方案。

这个想法是使用process.chdir 导航到不同的位置。更新后的代码如下:

if (options.base) {
   process.chdir(options.base);
}

gulp.task('copy', function() {
   gulp.src('sampleFile.js').pipe(gulp.dest('dist/'));
});

gulp.task('clean', function() {
   del.sync([options.dist]);
});

【讨论】:

    【解决方案2】:

    CLI 标志 --cwd 可以让您在全局范围内更改它——尽管要执行您想要的操作,您还需要在您调用它的目录中为其提供 gulpfile 的位置,所以

    gulp --gulpfile gulpfile.js --cwd ../
    

    将替换您拥有的路径前缀。

    您还可以为您的 gulp.src 调用创建一个选项对象,并在其上使用 cwd: base

    var opts = {cwd: '..'}
    
    gulp.task('copy', function() {
       gulp.src('sampleFile.js', opts).pipe(gulp.dest('dist/'));
    });
    

    将您的 Gulpfile 移动到一个目录中也可能是有意义的,它可以更清楚地访问它将读取和写入的内容。

    【讨论】:

    • 感谢您的回答@max。它确实解决了问题,但我认为这不是我可以接受的解决方案。我正在编写一个包含 gulp 任务的库,并且位置不同,所以我无法将它移动到正确的位置。我可以添加 opts,但我必须为我拥有的每一个“src”添加它。听起来更合适的是 CLI。但是我必须将此通知给我图书馆的消费者(这是不希望的)。抱歉,我应该更好地解释我的需求。
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多