带有precis插件的Gulp-postss在导入scss文件时引发错误



我试图在我的app.scss文件中导入多个scs文件,但gulp抛出了一个错误:

//app.scss
@import "base";
body {
   background: #fff;
}

gullfile.js

gulp.task('build-css', function () {
    return gulp.src(assetsDev + 'scss/*.scss')
        .pipe(sourcemaps.init())
        .pipe(postcss([precss, autoprefixer, cssnano]))
        .pipe(sourcemaps.write())
        .pipe(ext_replace('.css'))
        .pipe(gulp.dest(assetsProd + 'css/'));
});

目录结构:

├── assets
│   └── scss
│       ├── _base.scss
│       └── app.scss
├── src
│   └── css
│       └── style.css
└── gulpfile.js

gullow抛出了这个错误:

events.js:141
  throw er; // Unhandled 'error' event
  ^
Error: ENOENT: no such file or directory, open '...assetsscss_base.css'
at Error (native)

precss@import语句使用postcss-partial-import插件。默认情况下,它假定导入的分部的扩展名为css

您需要在所有@import语句中提供完整的文件名(带扩展名):

@import "_base.scss";
body {
  background: #fff;
}

或者您需要将extension选项传递给precss():

gulp.task('build-css', function () {
  return gulp.src(assetsDev + 'scss/*.scss')
    .pipe(sourcemaps.init())
    .pipe(postcss([precss({extension:'scss'}), autoprefixer, cssnano]))
    .pipe(sourcemaps.write())
    .pipe(ext_replace('.css'))
    .pipe(gulp.dest(assetsProd + 'css/'));
});

最新更新