监听sass、html变化热更新,gulp4配置

用习惯了Vue的脚手架,有时候脱离框架开发的时候确实不习惯,连基本的自动编译和热更新都没,手动刷新查看变化太不爽了。
今天又把以前用过的gulp捡起来,结果因为node已经是14+了,gulp3的写法过时了,运行不起来。重新学习gulp4,记录下。

这个配置是没有用到打包功能的,只是监测本地文件变更,再编译scss为css,最后热更新。

package.json,其实用不了那么多,真正使用的依赖没几个,可以自行筛选

"devDependencies": {
    "chai": "^4.1.1",
    "del": "^2.2.2",
    "express-mockjs": "^0.4.9",
    "gulp": "^4.0.2",
    "gulp-autoprefixer": "^2.2.0",
    "gulp-cache": "^1.1.3",
    "gulp-clean-css": "^3.0.0",
    "gulp-compass": "^2.1.0",
    "gulp-concat": "^2.6.0 ",
    "gulp-header": "^1.8.8",
    "gulp-htmlmin": "^3.0.0",
    "gulp-if": "^2.0.1",
    "gulp-livereload": "^4.0.2",
    "gulp-minify-css": "^1.2.4",
    "gulp-notify": "^2.2.0",
    "gulp-plumber": "^1.2.1",
    "gulp-rename": "^1.2.2",
    "gulp-replace": "^0.6.1",
    "gulp-ruby-sass": "^1.0.5",
    "gulp-uglify": "^1.5.4",
    "gulp-webserver": "^0.9.1",
    "minimist": "^1.2.0",
    "mocha": "^3.2.0",
    "sinon": "^3.2.1",
    "sinon-chai": "^2.13.0"
  },
  "dependencies": {
    "browser-sync": "^2.27.7",
    "gulp-connect": "^5.7.0",
    "gulp-livereload": "^4.0.2",
    "gulp-sass": "^5.1.0",
    "gulp-watch": "^5.0.1",
    "node-sass": "^7.0.1"
  }
}

gulpfile.js:



var pkg = require('./package.json');
var inds = pkg.independents;

var gulp = require('gulp');

var plumber = require('gulp-plumber');
var compass = require('gulp-compass');
var sass = require('gulp-sass')(require('node-sass'));
var autoprefixer = require('gulp-autoprefixer');
const browserSync = require("browser-sync").create(), //自动刷新
    reload = browserSync.reload;
var watch = require('gulp-watch');//监视
var connect=require('gulp-connect');//引入gulp-connect模块 浏览器刷新
var uglify = require('gulp-uglify');
var minifyCss = require('gulp-minify-css');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var notify = require('gulp-notify');
var cache = require('gulp-cache');
var livereload = require('gulp-livereload');
var webserver = require('gulp-webserver');
var replace = require('gulp-replace');

var header = require('gulp-header');
var del = require('del');
var gulpif = require('gulp-if');
var minimist = require('minimist');



gulp.task('html', function(){//编译html
  return gulp.src('src/views/**/*.html')
  //.pipe(gulp.dest('app/dist'))
      .pipe(connect.reload());
})

gulp.task('css', function(){//编译scss
  return gulp.src('src/sass/**/*.scss')

      //.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))//编译scss

      //使用gulp-compass,必须本机安装compass: npm install gulp-compass --save-dev
      .pipe(plumber({
          errorHandler: function (error) {
              console.log(error.message);
              this.emit('end');
          }}))
      .pipe(compass({
          //config_file: './config.rb',
          //project: path.join(__dirname, 'assets'),
          css: 'src/style',
          sass: 'src/sass',
          image: 'src/style/images',
          style: 'compressed'
      }))
      .on('error', function(error) {
          // Would like to catch the error here
      })
      .pipe(minifyCss())
      .pipe(gulp.dest('src/style')) //当前对应css文件
      .pipe(connect.reload());//更新
})

gulp.task('connect:src', async function(){
  gulp.src('/')
      .pipe(webserver({
        host:'localhost', //根域名
        path:'/', //默认localhost:8080
        livereload: true, //自动更新
        open: 'start/index.html' ,
        port: 9998 //端口
      }))
})

gulp.task('watchs',function(){//监听变化执行任务
  //当匹配任务变化才执行相应任务
  gulp.watch(['src/views/**/*.html', 'start/views/**/*.html'], gulp.series('html'));
  gulp.watch('src/sass/**/*.scss', gulp.series('css'));
  gulp.watch('src/style/**/*.css');
})

//启动任务connect:dist服务,生成打包文件后,监控其变化
gulp.task('serve',gulp.series('connect:src', 'watchs'));

配置完后,使用命令启动热服务

gulp serve

创建sass变量文件,然后@import到其他scss文件。

@import "compass/css3", "compass/support", "compass/utilities";
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。