【问题标题】:How can I use the path from gulp.src() in gulp.dest()?如何在 gulp.dest() 中使用来自 gulp.src() 的路径?
【发布时间】:2014-04-10 01:29:51
【问题描述】:

尝试创建一个 gulp 任务,将来自不同文件夹的一堆文件通过 LESS 管道传输,然后将它们输出到基于原始源的文件夹。考虑这个文件夹结构:

Project
+-- /Module_A
|   +- /less
|   |  +- a.less
|   +- a.css
|
+-- /Module_B
    +- /less
    |  +- b.less
    +- b.css

这是我的 gulpfile:

var gulp = require('gulp');
var gutil = require('gulp-util');
var less = require('gulp-less');

gulp.task('compileLess', function () {
  gulp.src('./*/less/*.less')
    .pipe(less())
    .pipe(gulp.dest( ??? ));
});

gulp.task('default', ['compileLess']);

我知道 gulp.dest() 需要传入一个路径,但在我的示例中,路径会因源文件而异。那么如何从源中获取路径,对其进行修改,然后将其传递给 gulp.dest()?

或者我是不是走错了路?

【问题讨论】:

  • 给定您的示例输入,输出应该是什么? Gulp 使用相对文件路径(基于第一个 glob 模式)来确定输出目录。
  • 如果输入是Project/Module_A/less/a.less,我希望输出是Project/Module_A/a.css。我能够使用 gulp-rename 插件完成。

标签: gulp less gulp-less


【解决方案1】:

在您的src 中设置base 选项,它将保留您的less 文件的原始路径。

gulp.task('compileLess', function () {
  gulp.src('./*/less/*.less', {base: './'})
    .pipe(less())
    .pipe(gulp.dest( './dist' ));
});

./dist 目标可以是任何东西。将文件结构放置在任何位置。

此处的其他信息: https://github.com/wearefractal/glob-stream#options

【讨论】:

  • 是的!这就是我要找的!
  • 关键字base 给了我错误的想法。这是我一直在寻找的解决方案。
  • 添加, {base: './'} 至关重要。
  • 但它会在./dist 内创建一个名为less 的文件夹,然后将文件放在那里。如何指定要排除“less”文件夹并将文件放在那里?
  • 这比公认的答案要简洁得多。非常感谢:)
【解决方案2】:

你应该看看gulp-rename

差不多:

gulp.src('./*/less/*.less')
  .pipe(less())
  .pipe(rename(function(path){
    // Do something / modify the path here         
  }))
  .pipe(gulp.dest('./finalRootDestination'))

你让 gulp.dest 指向你的最终输出目录,但是根据你想要在 gulp-rename 回调中的任何逻辑动态修改各个文件路径。

【讨论】:

  • 您能否进一步解释一下您是如何获得的?我正在使用重命名插件,但无法弄清楚如何获取:“img/jquery-prettyPhoto/images/prettyPhoto/image.jpg”以输出“img/prettyPhoto/image.jpg”。我如何删除这两个无用的文件夹?谢谢
  • @pwnjack : 你读过我链接的gulp-rename 的文档吗?
  • 我当然做了,否则我不会在这里问。您能否解释一下如何摆脱文件夹,或者至少设置一个绝对输出路径?谢谢
  • 阅读文档好友!它清楚地解释了如何操作dirname,这就是你要找的。​​span>
  • 我更喜欢 CoryDorning 的回答 - 那么你甚至不需要做额外的管道。看起来这就是 src() 基本选项的设计目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 2014-07-20
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多