【问题标题】:Gulp watch not working with imported files but works with main fileGulp watch 不能处理导入的文件,但可以处理主文件
【发布时间】:2016-03-30 05:23:51
【问题描述】:

所以我在下面有我的构建脚本并且一切正常,除了如果我保存的文件不是我的 app.scss 文件而是导入到该文件中的文件,sass 任务不会运行。所以我的 gulp 版本正在观看,但不是我猜的所有文件。不知道如何解决这个问题。我以为我指定使用“/*.scss”查看所有文件

我希望得到一些帮助。

谢谢!

gulpfile.js

// Include gulp
var gulp = require('gulp');

// Include Our Plugins
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var browserSync = require('browser-sync');

var reload = browserSync.reload;

var sassOptions = {
    errLogToConsole: true,
    outputStyle: 'compressed',
    includePaths: ['bower_components/foundation-sites/scss', 'bower_components/motion-ui/src']
};

// Set the proxy.
gulp.task('browser-sync', function () {
    browserSync({
        proxy: "localhost:8000/wozencraftinsurance.dev/"
    });
});


// Lint Task
gulp.task('lint', function() {
    return gulp.src('js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});

// Compile Sass file to CSS, and reload browser(s).
gulp.task('sass', function() {
    return gulp.src('assets/scss/*.scss')
        .pipe(sass(sassOptions))
        .pipe(gulp.dest('assets/css'))
        .pipe(reload({stream:true}));
});

// Reload browser(s)
gulp.task('bs-reload', function() {
    return gulp.src('./*.php')
        .pipe(reload({stream:true}));
});

// Concatenate & Minify JS
gulp.task('scripts', function() {
    return gulp.src('js/*.js')
        .pipe(concat('all.js'))
        .pipe(gulp.dest('assets/js'))
        .pipe(rename('all.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('assets/js'));
});

// Watch Files For Changes
gulp.task('watch', function() {
    gulp.watch('assets/js/*.js', ['lint', 'scripts']);
    gulp.watch('assets/scss/*.scss', ['sass']);
});

// Default Task
gulp.task('default', ['browser-sync', 'lint', 'sass', 'scripts', 'watch']);

app.scss

@charset 'utf-8';

@import 'settings';
@import 'foundation';
@import 'motion-ui';

@include foundation-global-styles;
@include foundation-grid;
// @include foundation-flex-grid;
@include foundation-typography;
@include foundation-button;
@include foundation-forms;
// @include foundation-range-input;
@include foundation-accordion;
@include foundation-accordion-menu;
@include foundation-badge;
@include foundation-breadcrumbs;
@include foundation-button-group;
@include foundation-callout;
@include foundation-close-button;
@include foundation-menu;
@include foundation-menu-icon;
@include foundation-drilldown-menu;
@include foundation-dropdown;
@include foundation-dropdown-menu;
@include foundation-flex-video;
@include foundation-label;
@include foundation-media-object;
@include foundation-off-canvas;
@include foundation-orbit;
@include foundation-pagination;
@include foundation-progress-bar;
// @include foundation-progress-element;
// @include foundation-meter-element;
@include foundation-slider;
@include foundation-sticky;
@include foundation-reveal;
@include foundation-switch;
@include foundation-table;
@include foundation-tabs;
@include foundation-thumbnail;
@include foundation-title-bar;
@include foundation-tooltip;
@include foundation-top-bar;
@include foundation-visibility-classes;
@include foundation-float-classes;
// @include foundation-flex-classes;

@include motion-ui-transitions;
@include motion-ui-animations;

// NOUVEAU mixins, including image-url() fix
@import "nv-mixins";

// Load NOUVEAU compatibility styles
@import "nv-wordpress";

// Color
$brand-orange: #ff9900;
$brand-hove-blue: #0066cc;
$brand-blue: #181826;
$brand-dark-blue: #1b1b25;
$brand-dark-blue2: #181826;
$brand-light-grey: rgba(206, 206, 208, 0.5);
$brand-orange-rgba: rgba(255, 153, 0, 0.5);
$brand-blue-rgba: rgba(0, 102, 204, 0.5);

@import 'parts/general';
@import 'parts/header';
@import 'pages/home';
@import 'pages/insurance';
@import 'pages/news';
@import 'pages/why-us';
@import 'pages/contact';
@import 'parts/footer';

文件结构 http://puu.sh/nTIZ0/01f8065605.png

命令行 http://puu.sh/nZ6Os/ddac15849d.png

【问题讨论】:

    标签: gulp gulp-watch gulp-sass


    【解决方案1】:

    您正在关注assets/scss/ 中所有文件的更改,因此assets/scss/app.scss 的更改将被gulp.watch() 接收。

    但是,您不会关注任何子文件夹中的更改(例如 assets/scss/pages)。因此,如果您在此处修改 SCSS 文件,它不会gulp.watch() 拾取。

    您需要告诉gulp.watch() 也可以通过以下方式查看子文件夹:

    gulp.watch('assets/scss/**/*.scss', ['sass']);
    

    代替:

    gulp.watch('assets/scss/*.scss', ['sass']);
    

    【讨论】:

    • 我也有同样的问题,但并没有解决。我从事一个大型项目,并且有很多 .less 进口。有什么方法可以让 gulp 递归地通过导入并观察它们吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多