Skip to content

前端自动化之gulp最佳实践,快速构建自己的自动化工具,是学习gulp最好指南!

Notifications You must be signed in to change notification settings

xiangcaozhu/gulp-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

前端入门之前端自动化工具(Gulp)

前端自动化之gulp最佳实践,快速构建自己的自动化工具,是学习gulp最好指南!

1、Gulp概述

将重复工作抽象成一个个的任务,机械化处理这些重复的任务。

2、Gulp四大接口

2.1获取文件源gulp.src();

2.2转移文件到目标gulp.dest();

2.3监听文件变化gulp.watch();

2.4添加执行任务gulp.task();

3、Gulp常用插件

gulp插件黑名单

3.1公共插件

var gulpLoadPlugins = require('gulp-load-plugins');
var pg = gulpLoadPlugins();
pg.jshint //插件帮我自动加载require('gulp-jshint');
pg.concat //插件帮我自动加载require('gulp-concat');
// rename via hash 
gulp.src("./src/main/text/hello.txt", { base: process.cwd() })
.pipe(rename({
	dirname: "main/text/ciao",
	basename: "aloha",
	prefix: "bonjour-",
	suffix: "-hola",
	extname: ".md"
}))
.pipe(gulp.dest("./dist")); 
// ./dist/main/text/ciao/bonjour-aloha-hola.md 
gulp.task('javascript', function() {
  return gulp.src('src/**/*.js')
    .pipe(sourcemaps.init())
      .pipe(concat('all.js'))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest('dist'));
});
<!-- build:<pipelineId>(alternate search path) <path> -->
	pipelineId:html/css/js或inlinecss、inlinejs、remove
	path:新文件路径或文件名
<!-- endbuild -->
例如:
<!-- build:css style.css -->
<link rel="stylesheet" href="css/clear.css"/>
<link rel="stylesheet" href="css/main.css"/>
<!-- endbuild -->
gulp.task('usemin', function() {
  return gulp.src('./*.html')
    .pipe(usemin({
      css: [ rev ],
      html: [ function () {return htmlmin({ collapseWhitespace: true });} ],
      js: [ uglify, rev ],
      inlinejs: [ uglify ],
      inlinecss: [ cleanCss, 'concat']
    }))
    .pipe(gulp.dest('build/'));
});
var del = require('del');
var vinylPaths = require('vinyl-paths');

gulp.task('clean:tmp', function () {
  return gulp.src('tmp/*')
    .pipe(vinylPaths(del))
    .pipe(stripDebug())
    .pipe(gulp.dest('dist'));
});
var browserSync = require('browser-sync').create();
gulp.task('serve', function () {

    // Serve files from the root of this project
    browserSync.init({
    	files: "**",
        port:"1688",
        server: {
            baseDir: "./src",
        }
    });

    gulp.watch("dist/**").on("change", browserSync.reload);
});

3.2处理html文件插件

gulp.task('html', function() {
  return gulp.src('src/*.html')
    .pipe(htmlmin({collapseWhitespace: true}))
    .pipe(gulp.dest('dist'));
});

3.3处理css文件插件

gulp.task('sass', function () {
  return gulp.src('./sass/**/*.scss')
    .pipe(sass.sync().on('error', sass.logError))
    .pipe(gulp.dest('./css'));
});
gulp.src('./less/**/*.less')
  .pipe(sourcemaps.init())
  .pipe(less())
  .pipe(sourcemaps.write())
  .pipe(gulp.dest('./public/css'));
gulp.task('minify-css', function() {
    return gulp.src('./src/*.css')
        .pipe(sourcemaps.init())
        .pipe(cleanCSS())
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('dist'));
});
gulp.task('default', () =>
    gulp.src('src/**/*.css')
        .pipe(sourcemaps.init())
        .pipe(autoprefixer())
        .pipe(concat('all.css'))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('dist'))
);

3.4处理js文件插件

gulp.task('default', () => {
    return gulp.src('src/**/*.js')
        .pipe(sourcemaps.init())
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(concat('all.js'))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('dist'));
});
gulp.task('uglify', function (cb) {
  pump([
        gulp.src('lib/*.js'),
        uglify(),
        gulp.dest('dist')
    ],
    cb
  );
});
gulp.task('lint', function() {
  return gulp.src('./lib/*.js')
    .pipe(jshint())
    .pipe(jshint.reporter('YOUR_REPORTER_HERE'));
});

3.5处理images图片文件插件

gulp.task('default', () =>
    gulp.src('src/images/*')
        .pipe(imagemin([
		    imagemin.gifsicle({interlaced: true}),
		    imagemin.jpegtran({progressive: true}),
		    imagemin.optipng({optimizationLevel: 5}),
		    imagemin.svgo({plugins: [{removeViewBox: true}]})
		]))
        .pipe(gulp.dest('dist/images'))
);
//gifsicle — Compress GIF images
//jpegtran — Compress JPEG images
//optipng — Compress PNG images
//svgo — Compress SVG images

4 安装gulp配置文件

4.1安装 gulp 命令行工具

npm init
npm install -g gulp

4.2 安装插件

npm install gulp gulp-load-plugins gulp-minify-html gulp-usemin gulp-dev gulp-less gulp-clean-css gulp-autoprefixer gulp-uglify gulp-babel babel-preset-es2015 gulp-jshint gulp-imagemin gulp-rename gulp-concat gulp-clean gulp-sourcemaps browser-sync -D

4.2.1 package.json文件开发依赖如下:

"devDependencies": {
    "babel-preset-es2015": "^6.24.1",
    "browser-sync": "^2.18.11",
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^4.0.0",
    "gulp-babel": "^6.1.2",
    "gulp-clean": "^0.3.2",
    "gulp-clean-css": "^3.3.1",
    "gulp-concat": "^2.6.1",
    "gulp-dev": "^0.3.0",
    "gulp-imagemin": "^3.2.0",
    "gulp-jshint": "^2.0.4",
    "gulp-less": "^3.3.0",
    "gulp-load-plugins": "^1.5.0",
    "gulp-minify-html": "^1.0.6",
    "gulp-rename": "^1.2.2",
    "gulp-sourcemaps": "^2.6.0",
    "gulp-uglify": "^2.1.2",
    "gulp-usemin": "^0.3.28",
    "jshint": "^2.9.4"
  }

4.3创建Gulp配置文件gulpfile.js

About

前端自动化之gulp最佳实践,快速构建自己的自动化工具,是学习gulp最好指南!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published