gulp编译

本文主要介绍如何利用gulp工具来编译less和sass文件,帮助开发者将预处理器语言转换为CSS,提升前端开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,nodejs环境
2,全局方式安装gulp  npm install -g gulp
3,全局安装gulp后,还需要在每个要使用gulp的项目中都单独安装一次
3,如果想在安装的时候把gulp写进项目package.json文件的依赖中,则可以加上--save-dev: npm install --save-dev gulp
4,npm国内墙的问题,建议使用cnpm替代,输入:npm install -g cnpm --registry=http://registry.npm.taobao.org在npm下安装cnpm,然后以后需要用到npm指令安装用cnpm指令替代能解决大部分无法获取的镜像
5, 1:gulp-rename 重命名 npm install --save-dev gulp-rename 
    2:gulp-uglify js文件压缩 npm install --save-dev gulp-uglify
    3:gulp-minify-csscss文件压缩npm install --save-dev gulp-minify-css
    4:gulp-minify-htmlhtml文件压缩npm install --save-dev gulp-minify-html
    5:gulp-less

less和sass的编译

npm install --save-dev gulp-less

// 引入gulp
var gulp   = require('gulp');
// 引入组件
var jshint = require('gulp-jshint');
var sass   = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var minifyCss = require('gulp-minify-css');
var fs  = require('fs');
var replace = require('gulp-replace');
var htmlmin = require('gulp-htmlmin');
// var elixir = require('laravel-elixir');

// 压缩html,清除注释代码
gulp.task('html', function() {
    var htmlSrc = 'resources/assets/home/',
        htmlDist = 'public/home/';

    // 参数说明:http://www.jb51.net/article/85973.htm
    var isFormat = true;
    var options = {
        collapseWhitespace: isFormat,
        collapseBooleanAttributes: isFormat,
        removeComments: isFormat,
        removeEmptyAttributes: isFormat,
        removeScriptTypeAttributes: isFormat,
        removeStyleLinkTypeAttributes: isFormat,
        minifyJS: isFormat,
        minifyCSS: isFormat
    };

    var htmlBaseSrc  = 'resources/assets/home/',
        htmlBasePos  = '*.html',
        htmlBaseDist = 'public/home/';
    // 'community/',
    var htmlPosArr  = ['','bjc/','wxr/','academy/','community/','activity/','bond/','future/','guestActivity/','LkGroup/','register/','standardTail/','task/design/','task/lightTask/','task/publish/','user/','user/company/','user/designer/','user/person/','works/'];
    var htmlLen = htmlPosArr.length;

    for(var i=0; i < htmlLen; i++) {
        gulp.src(htmlBaseSrc+htmlPosArr[i]+htmlBasePos).pipe(htmlmin(options)).pipe(gulp.dest(htmlBaseDist+htmlPosArr[i]));
    }
});

// 编译sass并压缩
gulp.task('sass', function () {

    var cssBaseSrc = 'resources/assets/sass/',
        cssBaseDist = 'public/css/';

    var cssSrcArr = [['*.scss', ''], ['wxRegistScss/*.scss', 'wxRegistScss']],
        cssArrLen = cssSrcArr.length;

    for(var i=0; i < cssArrLen; i++) {

        gulp.src(cssBaseSrc+cssSrcArr[i][0]).pipe(sass()).pipe(minifyCss()).pipe(gulp.dest(cssBaseDist+cssSrcArr[i][1]));

    }

});

// 合并、压缩js文件
gulp.task('js', function() {
    var jsBaseSrc = 'resources/assets/js/',
        jsBaseDist = 'public/js/';
    // ['pay/*.js', 'pay'] , ['base/*.js', 'base']
    var jsSrcArr = [['*.js', ''],['util/*.js', 'util'],['base/*.js',"base"],['wxRegistJs/*.js','wxRegistJs']],
        jsArrLen = jsSrcArr.length;
    var config = {
        mangle: {except: ['define', 'require', 'exports', 'module', '$']},
        compress: true
    };
    /*gulp.src(jsSrc).pipe(concat('all.js')).pipe(gulp.dest(jsDist)).pipe(rename('all.min.js')).pipe(uglify(config)).pipe(gulp.dest(jsDist));*/
    for(var i=0; i < jsArrLen; i++) {
        gulp.src(jsBaseSrc+jsSrcArr[i][0]).pipe(gulp.dest(jsBaseDist+jsSrcArr[i][1]));
    }

    // gulp.src(jsSrc).pipe(gulp.dest(jsDist));
});

// 公共头部、尾部
gulp.task('hfooter', function() {

    var htmlBaseDir = 'resources/assets/home/';
    var replaceArr = ['', 'bond/', 'works/', 'task/design/','task/lightTask/', 'task/publish/', 'future/', 'guestActivity/', 'standardTail/', 'activity/', 'community/'];
    var replaceLen = replaceArr.length;

    for(var i=0; i < replaceLen; i++) {
        (function(i) {
            var htmlDir = htmlBaseDir+replaceArr[i];
            fs.readdir(htmlDir, function(err, files) {
                if (err) {
                    console.log(err);
                } else {
                    files.forEach(function(f) {
                        if (f !== 'head.html' && f !== 'footer.html') {
                            gulp.src(htmlDir + f)
                                .pipe(replace(/<!--header-->[\s\S]*<!--headerend-->/, '<!--header-->\n' + fs.readFileSync(htmlBaseDir + 'head.html', 'utf-8') + '\n<!--headerend-->'))
                                .pipe(replace(/<!--footer-->[\s\S]*<!--footerend-->/, '<!--footer-->\n' + fs.readFileSync(htmlBaseDir + 'footer.html', 'utf-8') + '\n<!--footerend-->'))
                                .pipe(replace(/<!--baidu_begin-->[\s\S]*<!--baidu_end-->/, fs.readFileSync(htmlBaseDir + 'baidu.js.html', 'utf-8')))
                                .pipe(gulp.dest(htmlDir))
                        }
                    });
                }
            });
        })(i);
    }


    // var htmlDirC = 'resources/assets/home/community/';
    // var replaceDirC = 'resources/assets/home/';
    // fs.readdir(htmlDirC, function(err, files) {
    //     if (err) {
    //         console.log(err);
    //     } else {
    //         files.forEach(function(f) {
    //             if (f !== 'head.html' && f !== 'footer.html') {
    //                 gulp.src(htmlDirC + f)
    //                     .pipe(replace(/<!--header-->[\s\S]*<!--headerend-->/, '<!--header-->\n' + fs.readFileSync(htmlDirC + 'head.html', 'utf-8') + '\n<!--headerend-->'))
    //                     .pipe(replace(/<!--footer-->[\s\S]*<!--footerend-->/, '<!--footer-->\n' + fs.readFileSync(replaceDirC + 'footer.html', 'utf-8') + '\n<!--footerend-->'))
    //                     .pipe(replace(/<!--baidu_begin-->[\s\S]*<!--baidu_end-->/, fs.readFileSync(replaceDirC + 'baidu.js.html', 'utf-8')))
    //                     .pipe(gulp.dest(htmlDirC))
    //             }
    //         });
    //     }
    // });

  
    var htmlDir = 'resources/assets/home/academy/';
    var replaceDir = 'resources/assets/home/';
    fs.readdir(htmlDir, function(err, files) {
        if (err) {
            console.log(err);
        } else {
            files.forEach(function(f) {
                if (f !== 'head.html' && f !== 'footer.html') {
                    gulp.src(htmlDir + f)
                        .pipe(replace(/<!--header-->[\s\S]*<!--headerend-->/, '<!--header-->\n' + fs.readFileSync(htmlDir + 'head.html', 'utf-8') + '\n<!--headerend-->'))
                        .pipe(replace(/<!--footer-->[\s\S]*<!--footerend-->/, '<!--footer-->\n' + fs.readFileSync(replaceDir + 'footer.html', 'utf-8') + '\n<!--footerend-->'))
                        .pipe(gulp.dest(htmlDir))
                }
            });
        }
    });

    // 个人中心 (企业、设计师、普通用户)
    var userDirArr = [['user/designer/', 'userHead.html'],['user/person/', 'userHeadP.html'],['user/company/', 'userHeadC.html']];
    var userLen = userDirArr.length;

    for(var i=0; i < userLen; i++) {
        (function(i) {
            var htmlDir = htmlBaseDir + userDirArr[i][0];
            fs.readdir(htmlDir, function(err, files) {
                if (err) {
                    console.log(err);
                } else {
                    files.forEach(function(f) {
                        if (f !== userDirArr[i][1] && f !== 'footer.html') {
                            gulp.src(htmlDir + f)
                                .pipe(replace(/<!--header-->[\s\S]*<!--headerend-->/, '<!--header-->\n' + fs.readFileSync(htmlBaseDir + userDirArr[i][1], 'utf-8') + '\n<!--headerend-->'))
                                .pipe(replace(/<!--footer-->[\s\S]*<!--footerend-->/, '<!--footer-->\n' + fs.readFileSync(htmlBaseDir + 'footer.html', 'utf-8') + '\n<!--footerend-->'))
                                .pipe(replace(/<!--baidu_begin-->[\s\S]*<!--baidu_end-->/, fs.readFileSync(htmlBaseDir + 'baidu.js.html', 'utf-8')))
                                .pipe(gulp.dest(htmlDir))
                        }
                    });
                }
            });
        })(i);
    }

    /* setTimeout(function() {
     gulp.run('html');
     },3000); */
});

gulp.task('watch', function() {

    gulp.watch(['resources/assets/sass/fag.scss', 'resources/assets/js/fag.js'], function() {
        gulp.run('signle');
    });

    gulp.run('signle');

});


gulp.task('signle', function() {

    /**
     * @type CSS
     */
    var cssBaseSrc = 'resources/assets/sass/',
        cssBaseDist = 'public/css/';

    var cssSrcArr = [['fag.scss', '']],
        cssArrLen = cssSrcArr.length;

    for(var i=0; i < cssArrLen; i++) {

        gulp.src(cssBaseSrc+cssSrcArr[i][0]).pipe(sass()).pipe(minifyCss()).pipe(gulp.dest(cssBaseDist+cssSrcArr[i][1]));
    }


    /**
     * @type html
     */
    var htmlBaseSrc  = 'resources/assets/home/',
        htmlBasePos  = '*.html',
        htmlBaseDist = 'public/home/';

    var htmlPosArr  = ['standardTail/'];
    var htmlLen = htmlPosArr.length;
    for(var i=0; i < htmlLen; i++) {
        gulp.src(htmlBaseSrc+htmlPosArr[i]+htmlBasePos).pipe(gulp.dest(htmlBaseDist+htmlPosArr[i]));
    }


    /**
     * @type js
     */
    var jsBaseSrc = 'resources/assets/js/',
        jsBaseDist = 'public/js/';
    var jsSrcArr = [['fag.js','']],
        jsArrLen = jsSrcArr.length;
    var config = {
        mangle: {except: ['define', 'require', 'exports', 'module', '$']},
        compress: true
    };

    for(var i=0; i < jsArrLen; i++) {
        gulp.src(jsBaseSrc+jsSrcArr[i][0]).pipe(gulp.dest(jsBaseDist+jsSrcArr[i][1]));
    }


});


gulp.task('default', function() {

    gulp.run('watch');
});



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值