npmjs:https://www.npmjs.com/
gulp:http://gulpjs.com/
sass + gulp-autoprefixer
var gulp = require('gulp'); var sass = require('gulp-sass'); var autoprefixer = require('gulp-autoprefixer'); gulp.task('default', function() { console.log('hello world!'); }); gulp.task('styles', function() { gulp.src('sass/**/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(autoprefixer({ browsers: ['last 3 versions'] })) .pipe(gulp.dest('./css')); });
watch:
gulp.task('default', function() { gulp.watch('sass/**/*.scss', ['styles']); });
live Editing:
browser-sync:http://www.browsersync.cn/docs/gulp/
- Install browser-sync.
- Create a browser-sync object and initialize the server.
var browserSync = require('browser-sync').create(); browserSync.init({ server: "./" }); browserSync.stream();
- Run gulp in Terminal, see how browser opens with the page open
unit test:
npm install --save-dev gulp-jasmine-phantom
var jasmine = require('gulp-jasmine-phantom');
gulp.task('tests', function () { gulp.src('tests/spec/extraSpec.js') .pipe(jasmine({ integration: true, vendor: 'js/**/*.js' })); });
gulp-concat:
npm install --save-dev gulp-concat
https://www.npmjs.com/package/gulp-concat
var concat = require('gulp-concat'); gulp.task('scripts', function() { return gulp.src('./lib/*.js') .pipe(concat('all.js')) .pipe(gulp.dest('./dist/')); });
gulp-uglify:
npm install --save-dev gulp-uglify
https://www.npmjs.com/package/gulp-uglify
var uglify = require('gulp-uglify'); gulp.task('compress', function() { return gulp.src('lib/*.js') .pipe(uglify()) .pipe(gulp.dest('dist')); });
gulp-babel:
npm install --save-dev gulp-babel babel-preset-es2015
https://www.npmjs.com/package/gulp-babel
const gulp = require('gulp'); const babel = require('gulp-babel'); gulp.task('default', () => { return gulp.src('src/app.js') .pipe(babel({ presets: ['es2015'] })) .pipe(gulp.dest('dist')); });
imagemin-pngquant:
npm install --save imagemin-pngquant
var gulp = require('gulp'); var imageminPngquant = require('imagemin-pngquant'); gulp.task('default', function () { return gulp.src('images/*.png') .pipe(imageminPngquant({quality: '65-80', speed: 4})()) .pipe(gulp.dest('build/images')); });
-------------------------------------------------------------------------------------------------------------------------------------------------------------
gulpfile.js
var gulp = require('gulp'); var sass = require('gulp-sass'); var autoprefixer = require('gulp-autoprefixer'); var browserSync = require('browser-sync').create(); var jasmine = require('gulp-jasmine-phantom'); gulp.task('default', ['styles', 'lint'], function() { gulp.watch('sass/**/*.scss', ['styles']); gulp.watch('js/**/*.js', ['lint']); browserSync.init({ server: './' }); }); gulp.task('styles', function() { gulp.src('sass/**/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(autoprefixer({ browsers: ['last 2 versions'] })) .pipe(gulp.dest('./css')) .pipe(browserSync.stream()); }); gulp.task('tests', function () { gulp.src('tests/spec/extraSpec.js') .pipe(jasmine({ integration: true, vendor: 'js/**/*.js' })); });