尝试使用 Gulp 到 运行 Sass

Trying to Use Gulp to Run Sass

我正在尝试设置 Gulp 来监视和编译我的 Django 项目中的 sass 文件

我按照应用文档安装了 gulp。示例任务有效。我看到 运行 sass 的每个答案都不一样。此版本 运行s 但它不处理 scss 更改:

'use strict';

var gulp = require('gulp');
var sass = require('gulp-sass');

sass.compiler = require('node-sass');

function defaultTask(cb) {
  gulp.watch('base/static/base/css/stylesheets/main.scss', sassCompile);
   cb();
 }
exports.default = defaultTask

function sassCompile(cb) {
  return gulp.src('base/static/base/css/stylesheets/main.scss')
    .pipe(sass()) // Converts Sass to CSS with gulp-sass
    .pipe(gulp.dest('base/static/base/css/main.css'));
  cb();
}
exports.sass = sassCompile;

// function watch() {
//   gulp.watch('base/static/base/css/stylesheets/main.scss', sassCompile);
// }
// exports.watch = watch; // don't forget to export your command!

运行ning gulp 的输出是:

[22:17:09] Using gulpfile ~/htdocs/myproject/gulpfile.js
[22:17:09] Starting 'default'...
[22:17:09] Finished 'default' after 3.29 ms

我必须按 ctrl-C 才能停止它。

gulp MacOS 上的版本 4.0.2。

我是这样手动的运行 sass:

/usr/local/bin/sass base/static/base/css/stylesheets/main.scss: base/static/base/css/main.css

固定

根据@Mark 的评论,这是工作版本:

'use strict';

var gulp = require('gulp');
var sass = require('gulp-sass');

sass.compiler = require('node-sass');

function defaultTask() {
  gulp.watch('base/static/base/css/stylesheets/**/*.scss', sassCompile);
 }
exports.default = defaultTask

function sassCompile() {
  return gulp.src('base/static/base/css/stylesheets/main.scss')
    .pipe(sass()) // Converts Sass to CSS with gulp-sass
    .pipe(gulp.dest('base/static/base/css'));
}
exports.sass = sassCompile;

您最初没有定义 sass 任务,例如:

function sass2css() {
  return gulp.src('relative path (from the gulpfile.js file) to your main.scss')
    .pipe(sass()) 
    .pipe(gulp.dest('must be a directory name here'));
}

是一般形式。在您编辑的问题中,您在 gulp.dest() 调用中添加了一个使用文件名 (....main.css) 的 sass 任务。我指出那应该是一个目录名,main.css 是由 gulp-sass 自动创建的,所以不需要自己命名。否则,我测试了你的代码并且它工作正常。

您的 sassCompile 任务中还有一个 cb(回调函数)和一个 return 语句。由于 return 语句,cb() 调用将永远无法到达,并且 return 语句在这种情况下足以向 gulp 发出异步完成信号,因此您可以删除对的所有引用cb 在此任务中。