我试图在我的app.scss文件中导入多个scss文件,但是gulp引发了错误:
//app.scss
@import "base";
body {
background: #fff;
}
gulpfile.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
并且gulp抛出了这个错误:
events.js:141
throw er; // Unhandled 'error' event
^
Error: ENOENT: no such file or directory, open '...\assets\scss\_base.css'
at Error (native)
答案 0 :(得分:1)
precss
对@import
语句使用postcss-partial-import
插件。 By default它假定导入的partials的扩展名为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/'));
});