【问题标题】:Gulp puts file in wrong directory second time it runsGulp 第二次运行时将文件放入错误的目录
【发布时间】:2014-05-16 23:33:28
【问题描述】:

我在使用 Gulp 时遇到了一个奇怪的问题。这是我的 Gulp 文件:

var gulp = require('gulp');
var autoprefixer = require('gulp-autoprefixer');
var notify = require('gulp-notify');
var sass = require('gulp-ruby-sass');

gulp.task('default', function() {
    gulp.run('main');

    gulp.watch('sass/*.scss', function() {
        gulp.run('main');
    })
});


gulp.task('main', function() {
    return gulp.src('sass/**/*.scss')
        .pipe(sass())
        .on('error', notify.onError(function(error) { return 'Error: ' + error.message; }))
        // .pipe(autoprefixer('last 10 version'))
        .pipe(gulp.dest('./css'))
        .pipe(notify({ message: 'Your SASS has been auto-prefixed and minified.'}))
    ;
});

脚本第一次正确运行。但是在同一脚本的第二次和后续运行(Gulp 没有停止运行)时,它会将其作为 .SCSS 文件的子项放在 SASS 目录中。知道为什么会这样。我什至不知道如何调试。

【问题讨论】:

  • 请检查您使用的是最新的稳定 gulp 版本,并向我们展示您的项目在 gulp 任务之前和之后的文件结构。我不明白你所说的“它把它作为 .SCSS 文件的子项放在 SASS 目录中”是什么意思,我正在使用你的 gulpfile,对我来说它按预期工作。

标签: sass gulp


【解决方案1】:

试试下面的代码。

它使用正确的 gulp 语法,将 gulp.run() 替换为支持的函数参数。

var gulp = require('gulp');
var autoprefixer = require('gulp-autoprefixer');
var notify = require('gulp-notify');
var sass = require('gulp-ruby-sass');




gulp.task('main', function() {
  return gulp.src('./sass/**/*.scss')
    .pipe(sass())
    .on('error', notify.onError(function(error) { return 'Error: ' + error.message; }))
    .pipe(gulp.dest('./css'))
    .pipe(notify({ message: 'Your SASS has been auto-prefixed and minified.'}));
});

gulp.watch('sass/*.scss', ['main']);
gulp.task('default', ['main']);

【讨论】:

  • 不。它仍然将文件保存在 SASS 目录中。而且我仍然收到关于 gulp.run() 被弃用的错误。
  • 请使用您的整个 gulpfile 更新您的帖子。除非您在 gulpfile 中定义了其他未在此处列出的任务,否则您不会收到 gulp.run 错误。
  • 这是我的整个 Gulp 文件。
  • 我用你的文件替换了我的文件,但仍然出现错误。
  • 这个问题解决了吗?我有同样的问题。似乎无论你的 gulp.src 文件夹是什么,它都会被添加到目的地,即如果 gulp.src('test/*.scss') 和 gulp.dest('./css'),那么文件实际上会进入 css /test,源文件夹被附加到目的地。
【解决方案2】:

找到了答案,gulp.dest 保留了 gulp.src 的文件夹结构,要覆盖你可以设置 src 的 base 属性,这将排除 base 设置的任何文件夹

example gulp.src('./sass/' + '**/*.scss', {base: 'sass'}) 现在从目标中排除 sass,不再将 sass 附加到您的 gulp.dest

Seethis 看看 gulp.src

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多