gulp入门 gulpfile.js配置 & 启动服务 & 监听-热更新

说明

gulp运行需要node.js环境
启动项目需要全局安装gulp

npm install gulp -g

配置文件

package.json

{
  "name": "bs_web_gulp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "browser-sync": "^2.26.7",
    "del": "^5.1.0",
    "gulp": "^4.0.2",
    "gulp-concat": "^2.6.1",
    "gulp-htmlmin": "^5.0.1",
    "gulp-less": "^4.0.1",
    "gulp-minify-css": "^1.2.4",
    "gulp-plumber": "^1.2.1",
    "gulp-uglify": "^3.0.2",
    "gulp-watch": "^5.0.1"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

gulpfile.js

使用ES6语法编写

const gulp = require('gulp');
const { task, src, dest, series, parallel } = gulp;
const less = require('gulp-less'); // 处理less文件
// const concat = require('gulp-concat');
const uglify = require('gulp-uglify'); // 处理js文件
const minifyCss = require('gulp-minify-css'); // 处理css文件
const htmlmin = require('gulp-htmlmin'); // 处理html文件
const del = require('del'); // 引入删除任务
const watch = require('gulp-watch'); // 解决原生gulp.watch只更新一次的bug
const browserSync = require('browser-sync'); // 服务
const plumber = require('gulp-plumber'); // 防止出错崩溃

task('htmlMin', () => src('src/**/*.html')
  .pipe(htmlmin({
    removeComments: true, //清除HTML注释
    collapseWhitespace: true, //压缩HTML
    // collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input />
    removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
    removeScriptTypeAttributes: true, //删除<script>的type="text/javascript"
    removeStyleLinkTypeAttributes: true, //删除<style>和<link>的type="text/css"
    minifyJS: true, //压缩页面JS
    minifyCSS: true, //压缩页面CSS
  }))
  .pipe(dest('dist'))
);

task('uglify', () => src('src/**/*.js')
  .pipe(uglify())
  .pipe(dest('dist'))
);

task('less', () => src('src/**/*.less')
  .pipe(plumber())
  .pipe(less())
  .pipe(dest('dist'))
);

task('minifyCss', () => src('dist/**/*.css')
  .pipe(minifyCss())
  .pipe(dest('dist'))
);

/**
 * 清空dist文件目录下所有文件
 * 图片目录不清理,图片一般不需要重复生产
 */
task('del', () => del([
  'dist/**/*',
  '!dist/images',
  '!dist/images/**/*',
  '!dist/img',
  '!dist/img/**/*',
  '!dist/common/img',
  '!dist/common/img/**/*'
]));

task('build', series(
  'del',
  'less',
  parallel('htmlMin', 'uglify', 'minifyCss')
));

task('browserSync', () =>
  browserSync.init({
    port: 8088,
    server: { baseDir: "src" },
    reloadOnRestart: false, // 刷新每个浏览器时Browsersync重新启动
    notify: false, // 不显示在浏览器中的任何通知
    timestamps: false, // 不追加时间戳文件注入
  })
);

task('watch', callback => {
  watch('src/**/*.html', series('htmlMin'));
  watch('src/**/*.less', series('less'));
  watch('src/**/*.js', series('uglify'));
  watch('dist/**/*.css', series('minifyCss'));
  watch('dist/**/*', browserSync.reload);
  callback();
});

task('help', callback => {
  setTimeout(() => {
    console.info(`
--------------------------------------------
执行以下命令:
$ gulp start      启动项目服务
$ gulp build      打包
$ gulp clear      清空dist目录(包含图片)
--------------------------------------------`);
  }, 50);
  callback();
});

/**
 * 清空dist文件目录下所有文件
 */
task('clear', () => del('dist/**/*'));
task('start', series('build', parallel('browserSync', 'watch')));
task('default', series('help'));

命令行工具进入项目目录
gulp命令获取命令提示

gulp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值