我正在尝试使用 gulp-ruby-sass 和/或 gulp-sass 但它们都不适合我并且认为我已经正确设置了它。我查看了一堆其他的 SO 帖子,但目前还没有对我有用。
我有另一个 gulp 任务,它递归地将资产目录和 index.html 从 src 复制到 dist 并且每次都有效。
为了测试 sass 设置是否正确,我运行 vanilla sass compile 然后运行 gulp;sass 更改工作并通过递归副本进行渲染。这是该 sass 测试的命令:
$ sass ./sass/main.scss ./src/assets/css/main.css
$ gulp
忘记 vanilla sass 测试并回到这里的 gulp sass 问题 - 在我的 gulpfile 中,我在运行递归复制任务之前运行 gulp sass 任务,所以如果它有效,那么应该应用和复制 sass 更改。至少我是这么想的。
这是我显示相关文件的目录结构:
├── src
│ ├── index.html
│ └── assets
│ ├── css
│ │ └── main.css
│ ├── js
│ │ └── app.js
│ └── img
│ └── etc.jpg
│
├── dist
│ └── index.html ( from ./src via recursive copy)
│ └── assets
│ └── (same as ./src/assets via recursive copy)
│
├── sass
│ ├── main.scss
│ ├── _partial1.scss
│ ├── _partial2.scss
│ └── etc ...
│
├── gulpfile.js
│
├── node_modules
│ └── etc ...
│
└── bower_components
└── etc ...
在 gulpfile.js 中有几个文件映射对象可以很好地用于 src/assets/ 的递归副本。但是为了测试 gulp-ruby-sass 任务,我对 sass/css 路径进行了硬编码,以消除文件映射错误的可能性。
作为记录,我在 OSX Maverics 10.9.5 上运行并认为我有正确的环境设置:
$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]
$ sass -v
Sass 3.4.9 (Selective Steve)
这是我的 gulpfile.js,显示了我迄今为止尝试过的方法,其中与 gulp-sass 相关的任务已被注释掉:
var gulp = require('gulp');
var watch = require('gulp-watch');
var gsass = require('gulp-ruby-sass');
// var gsass = require('gulp-sass');
var gutil = require('gulp-util');
// Base paths:
var basePaths = {
srcRoot: './src/',
distRoot: './dist/',
bowerRoot: './bower_components/'
};
// File paths:
var filePaths = {
sassRoot: basePaths.srcRoot + 'sass/',
assetsBuildRoot: basePaths.srcRoot + 'assets/',
jqMin: basePaths.bowerRoot + 'jquery/dist/jquery.min.js',
html: basePaths.srcRoot + 'index.html'
};
// With gulp-ruby-sass
gulp.task('compile-sass', function() {
gulp.src('./sass/main.scss')
.pipe(gsass({sourcemap: true, sourcemapPath: './sass/'}))
.on('error', function (err) { console.log(err.message); })
.pipe(gulp.dest('./src/assets/css'));
});
// With gulp-sass
// gulp.task('gsass', function () {
// gulp.src('./sass/*.scss')
// .pipe(gsass())
// .pipe(gulp.dest('./src/assets/css'));
// });
// Assets directory copied recursively from /src to /dist:
gulp.src(filePaths.assetsBuildRoot + '**/*.*', {base : basePaths.srcRoot})
.pipe(gulp.dest(basePaths.distRoot));
// Copy index.html from /src to /dist:
gulp.src(filePaths.html)
.pipe(gulp.dest(basePaths.distRoot));
gulp.task('default', function() {
// With gulp-ruby-sass
// return gulp.src('./sass/main.scss')
// .pipe(gsass({sourcemap: true, sourcemapPath: './sass/'}))
// .on('error', function (err) { console.log(err.message); })
// .pipe(gulp.dest('./src/assets/css'));
// gulp.watch('compile-sass');
console.log('You reached the finishing line');
});
我已经尝试了各种错误修复,例如:删除所有 vanilla sass 编译的 .css 文件并运行 gulp 编译,但没有生成 .css。还尝试删除 vanilla sass 编译生成的所有 *.map 文件,然后运行 gulp 但没有 dice。
任何人都可以看到任何明显错误的东西吗?
提前致谢。