我正在使用Gulp将我的sass编译成css。一个简单的任务编译style.scss
目录中的_/sass
文件,并将输出保存到项目的根目录中。 style.scss
仅用于导入_/sass
目录中的其他文件。
当我从命令行($ gulp
)运行默认任务时,我收到一个sass无法编译的错误。它包含在下面。我已从包含的文件中删除所有内容并再次运行该任务。我仍然收到相同的错误(我在网上看到的建议可能会测试编码问题。我不完全理解编码以及在我的场景中可能会破坏的方法)。
我也从命令行$ sass _/sass/style.scss style.css
运行,它与包含文件中的内容完美配合。这告诉我gulp sass插件本身存在问题。
gulpfile.js的相关摘录:
var gulp = require('gulp');
var sass = require('gulp-sass');
// Compile sass files
gulp.task('sass', function () {
gulp.src('./_/sass/style.scss')
.pipe(sass())
.pipe(gulp.dest('./'));
});
// The default task (called when you run `gulp`)
gulp.task('default', function() {
gulp.run('sass');
// Watch files and run tasks if they change
gulp.watch(['./_/sass/style.scss'], function() {
gulp.run('sass');
})
});
style.scss的全部内容:
/* RESET */
@import '_/sass/reset';
/* TYPOGRAPHY */
@import '_/sass/typography';
/* MOBILE */
@import '_/sass/mobile';
/* MAIN */
@import '_/sass/main';
目录结构:
├── _
│ ├── inc
│ │ ├── stuff
│ ├── js
│ │ ├── otherstuff.js
│ └── sass
│ ├── main.scss
│ ├── mobile.scss
│ ├── print.scss
│ ├── reset.scss
│ ├── style.scss
│ └── typography.scss
├── gulpfile.js
└── style.css
终端吐出:
[gulp] Using file /Users/jeshuamaxey/project/dir/path/gulpfile.js
[gulp] Working directory changed to /Users/jeshuamaxey/project/dir/path/html5reset
[gulp] Running 'default'...
[gulp] Running 'sass'...
[gulp] Finished 'sass' in 3.18 ms
[gulp] Finished 'default' in 8.09 ms
stream.js:94
throw er; // Unhandled stream error in pipe.
^
source string:11: error: file to import not found or unreadable: 'reset'
答案 0 :(得分:16)
按原样保存导入,只需将gulp sass模块中的includePaths
选项作为参数传递:
gulp.src('./_/sass/style.scss')
.pipe(sass({ includePaths : ['_/sass/'] }))
.pipe(gulp.dest('./'));
......应该为你做。
答案 1 :(得分:0)
为此你需要从相同的gulpfile.js文件夹开始
@import '_/sass/reset'
我认为Gulp读取导入并从gulpfile.js所在的位置找到该文件
答案 2 :(得分:0)
如果在Windows中使用Sublime文本,则应在Sunlime配置中添加规则。只需在“偏好设置”>“设置 - 用户”
中添加"atomic_save" : true
即可