gulpfile.js demo

var config = require("./build.config")   //获取build.config.js文件里的内容
var gulp = require("gulp")         //获取gulp模块
var sass = require(‘gulp-sass‘);          //gulp-sass模块是用于把sass转成cssvar path = require("path")var babel = require("gulp-babel");       //gulp-babel模块用于把es6转成es5
var postcss = require("gulp-postcss")    //项目中把scss文件转化成css文件
var autoprefixer = require(‘autoprefixer‘)    //autoprefixer根据当前浏览器的普及度以及属性支持提供给你前缀:
var postasset = require("postcss-assets")  //postcss-assets 插件用来处理图片和 SVG。在 CSS 声明中引用图片时,可以使用 resolve 加上图片路径的形式,如“resolve(‘logo.png’)”。https://www.ibm.com/developerworks/cn/web/1604-postcss-css/
var cssnano = require(‘cssnano‘)      //css文件压缩
var imagemin = require(‘gulp-imagemin‘);  //压缩图片文件
var pngquant = require(‘imagemin-pngquant‘);  //使用pngquant深度压缩png图片的imagemin插件
var uglify = require(‘gulp-uglify‘);         //压缩javascript文件
var cache = require(‘gulp-cache‘);          //静态资源缓存
var sourcemaps = require(‘gulp-sourcemaps‘);   //简单说,Source map就是一个信息文件,里面储存着位置信息。也就是说,转换后的代码的每一个位置,所对应的转换前的位置
var browserify = require(‘gulp-browserify‘);
var changed = require(‘gulp-changed‘);     //该插件能够实现只编译或打包改变过文件,大大加快了gulp task的执行速度。
var runSequence = require(‘run-sequence‘);    //让gulp任务,可以相互独立,解除任务间的依赖,增强task复用
livereload = require(‘gulp-livereload‘);     //不用F5了,实时自动刷新页面来开发
var rev = require(‘gulp-rev‘)                 //对文件加md5后缀
var revCollector = require(‘gulp-rev-collector‘);   //文件路径替换
var log = console.log.bind(console);
var prefix = require(‘gulp-prefix‘);   //给引用了静态资源的的HTML文件替换引用和加CDN前缀
require(‘shelljs/global‘)

gulp.task(‘d‘, function () {
    livereload.listen();
    gulp.watch(‘src/**/*.*‘, function (file) {   //关查src下的所有文件
        log("File " + file.path + " changed!");
        if (file.path.endsWith(".scss")) {    //如果文件后缀是.scss
            gulp.run("css")
        } else if (file.path.endsWith(".jsx")) {   //如果文件后缀是.jsx
            gulp.run("js")
        } else {
            livereload.changed(file.path);
        }
    })
    log("     ***** Watching " + "[crtl+c to stop.] ******     ");
});

gulp.task(‘r‘, function (callback) {
    rm(‘-rf‘, config.distRoot)
    runSequence(["js:r", "css:r"], "revCss", "revJs", callback)
});
css()
css(":r")
js()
js(":r")
gulp.task("default", ["r"]);

function js(type) {
    gulp.task("js" + (type || ""), function () {
        var stream = gulp.src(config.jsSrc)
            .pipe(changed(config.jsDist))
            .pipe(sourcemaps.init())
            .pipe(babel({
                presets: [‘es2015‘]
            }))
            .pipe(browserify({
                debug: false
            }))
        if (type == ":r") {
            stream = stream.pipe(uglify({compress: {warnings: true}}))
                .pipe(sourcemaps.write("./sources_maps"))
                .pipe(rev())
                .pipe(gulp.dest(config.jsDist))
                .pipe(rev.manifest())
                .pipe(gulp.dest(‘./rev/js‘))
        } else {
            stream.pipe(gulp.dest("./src/static/js"))
        }
        return stream;
    });
}
function css(type) {
    var processors = [
        postasset,
        autoprefixer({
            browsers: [‘last 2 versions‘, ‘Android >= 4.1‘],
            cascade: true,
            remove: true
        })
    ];
    var depend = [];
    if (type == ":r") {   // 如果是打包线上版本
        processors.push(cssnano());  压缩css
        depend[0] = "img"
    }
    gulp.task(‘css‘ + (type || ""), depend, function () {
        var stream = gulp.src(config.cssSrc)
            .pipe(changed(config.cssDist))
            .pipe(sass())
            .pipe(postcss(processors))
        //.pipe(rename(function (path) {
        //    path.extname = ".css"
        //}))

        if (type == ":r") {
            stream.pipe(rev())
                .pipe(gulp.dest(config.cssDist))
                .pipe(rev.manifest())
                .pipe(gulp.dest(‘./rev/css‘));
        } else {
            stream.pipe(gulp.dest("./src/static/css"))
        }
    });
}

gulp.task(‘img‘, function () {
    gulp.src(config.imgSrc)
        .pipe(cache(imagemin({   //缓存压缩图片
            progressive: true,
            svgoPlugins: [{removeViewBox: false}],
            use: [pngquant()]
        })))
        .pipe(gulp.dest(config.imgDist));
});

gulp.task(‘revCss‘, function () {
    return gulp.src([‘./rev/css/*.json‘, ‘./src/*.html‘])   //读取rev下面的.json文件,来替换html里面对应的文件名字
        .pipe(revCollector())                         //替换html中对应的记录
        .pipe(gulp.dest(config.distRoot));
});

gulp.task(‘revJs‘, function () {
    return gulp.src([‘./rev/js/*.json‘, config.distRoot+"*.html"])
        .pipe(revCollector())
        .pipe(gulp.dest(config.distRoot));
});

gulp.task(‘prefix‘, function(){
    gulp.src(config.distRoot+"*.html")
        .pipe(prefix(config.cdnUrl, null, ‘{{‘))
        .pipe(gulp.dest(config.distRoot));
});

gulp.task(‘img:clear‘, function (done) {  //清除图片缓存
    return cache.clearAll(done);
});
时间: 2024-10-09 06:09:13

gulpfile.js demo的相关文章

node入门(二)——gulpfile.js初探

本文关于gulpfile.js怎么写,利于完成个性化需求.本文开发环境默认已安装node,详情参考<node入门(一)——安装>. 一.安装gulp npm install -g gulp 二.进入项目根目录,创建package.json文件 npm init 现在项目目录下新增了package.json文件,内容如下: 三.在package.json里增加devDependencies配置项,告诉node在install时要下载哪些插件模块,例如下面是要加载gulp-less插件: gulp

gulp运行及gulpfile.js配置

控制台输入,运行gulp gulp default gulpfile.js var gulp = require('gulp'), //获取gulp htmlmin = require("gulp-htmlmin"), //压缩页面javascript.css,去除页面空格.注释,删除多余属性等操作 imagemin = require("gulp-imagemin"), //压缩图片文件 cache = require('gulp-cache'), //只压缩修改

基于 Koa.js 平台的 Node.js web 快速开发框架KoaHub.js demo 可安装

KoaHub.js demo KoaHub.js KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性,借助 Babel 编译,可稳定运行在 Node.js 环境上. github地址:http://github.com/einsqing/koahubjs demo 下载安装 //下载 git clone https://github.

如何在修改 gulpfile.js 文件后自动重启 gulp?

gulp 非常好用,编写好 gulpfile.js 文件后,一般情况下在命令行用 gulp 就能启动开发环境,大大简化了开发流程.但是有一个问题没有解决,就是编写 gulpfile.js 文件过程中,如果这个时候 gulp 已经启动,修改 gulpfile.js 文件,进程并不会变化,我们希望 gulpfile.js 文件修改后,gulp 进程能够自动重启 我们接下去以这个脚手架 gulp-simple 为例 原始的 gulpfile.js 文件如下: const gulp = require(

代码高亮插件——wangHightLighter.js——demo演示

wangHighLighter demo 语言:   主题: 转换 说明: wangHightLighter.js是一个可以将代码高亮显示的javascript小插件,支持常用的20多语言.多个漂亮的主题.代码开源. 使用说明 & 下载:https://github.com/wangfupeng1988/wangHighLighter ---------------------------------------------------------------------------------

gulpfile.js 合并压缩 requirejs 的配置文件

var gulp = require("gulp"); // var babel = require("gulp-babel"); // 用于ES6转化ES5 var uglify = require('gulp-uglify'); // 用于压缩 JS var minifycss = require('gulp-minify-css'); var amdOptimize = require("amd-optimize"); var concat

glup简单应用---gulpfile.js

//npm install gulp -g (global环境) //npm install gulp --save-dev (项目环境) //在项目中install需要的gulp插件,一般只压缩的话需要 //npm install gulp-minify-css gulp-concat gulp-uglify gulp-rename del --save-dev //以下require需要的module var gulp = require('gulp'), minifycss = requi

gulp(gulpfile.js)配置文件

1 /* 2 参考代码网址: 3 http://www.ido321.com/1622.html 4 http://colobu.com/2014/11/17/gulp-plugins-introduction/#gulp-rename 5 https://github.com/nimojs/gulp-book 6 */ 7 // 获取 gulp 8 var gulp = require('gulp'), 9 // js 压缩插件 (用于压缩 JS) 10 uglify = require('g

sea.js demo

index.html <script type="text/javascript" src="js/sea.js"></script> <script type="text/javascript"> // seajs 的简单配置 seajs.config({ base: "./js/", alias: { "jquery": "jquery-1.11.1.min