我试着使用but ruby-sass和/或up sass,但这两种方法对我都不起作用,我认为我已经正确地设置好了。我已经看了一堆其他的SO帖子,但到目前为止还没有适合我的帖子。
我得到了另一个gulp任务,它递归地将资源目录和index.html从src复制到dist,每次都有效。
为了测试sass设置的正确性,我运行了一个普通的sass编译,然后运行gulp;sass通过递归复制更改工作和渲染。下面是sass测试的命令:
$ sass ./sass/main.scss ./src/assets/css/main.css
$ gulp忘记普通的sass测试,回到这里的here sass问题-在我的gulpfile中,我在运行递归复制任务之前运行了gulp sass任务,所以如果它起作用了,那么sass的更改应该被应用和复制。至少我是这么想的。
下面是我的dir结构,显示了相关文件:
├── 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');
});我尝试了各种修复方法,例如:删除所有普通的sass编译的.css文件并运行gulp编译,但是没有生成.css。我还尝试删除了vanilla sass编译程序生成的所有*.map文件,然后运行gulp,但没有删除骰子。
有没有人能看出有什么明显的错误?
提前谢谢。
发布于 2015-01-06 03:29:53
如果您使用的是Sass >= 3.4,则需要安装gulp ruby-sass版本1.0.0-alpha:
npm install --save-dev gulp-ruby-sass@1.0.0-alpha在这个新版本中,gulp ruby-sass是一个gulp源适配器,语法略有变化。而不是:
gulp.task('compile-sass', function() {
gulp.src('./sass/main.scss')
task code here
});新的语法是:
gulp.task('compile-sass', function() {
return sass('./sass/main.scss')
task code here
});你可以在新版本的文档中找到更多信息,包括源地图的新语法。https://github.com/sindresorhus/gulp-ruby-sass/tree/rw/1.0
https://stackoverflow.com/questions/27379550
复制相似问题