gulp:压缩css、合并压缩js、压缩图片、Less使用

A、CSS压缩

1、安装Nodejs

2、全局安装gulp

npm install gulp -g

3、在项目目录下安装gulp

npm install gulp --save-dev

4、配置package.json文件
在项目目录执行,依次输入即可

npm ini


    {

        "name":"gulp_test",/*项目名,切记这里命名不要与模块一样,如命名为gulp,要地安装gulp时就会出错*/

        "version":"1.0.0",/*版本号*/

        "description":"",/*描述*/

        "main":"index.js",

        "scripts": {

        "test":"echo \"Error:notestspecified\" && exit 1"

        },

        "author":"",/*作者*/

        "license":"ISC"/*项目许可协议*/

    }

5、本地安装css压缩插件

npm install --save-dev gulp-minify-css

6、项目根目录创建gulpfile.js文件



    // 获取 gulp

    var gulp = require('gulp')

    // 获取 minify-css 模块(用于压缩 CSS)

    var minifyCSS = require('gulp-minify-css')

    // 压缩 css 文件

    // 在命令行使用 gulp css 启动此任务

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

    // 1. 找到文件

    gulp.src('css/*.css')

    // 2. 压缩文件

    .pipe(minifyCSS())

    // 3. 另存为压缩文件

    .pipe(gulp.dest('dist/css'))

    })

    // 在命令行使用 gulp auto 启动此任务

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

    // 监听文件修改,当文件被修改则执行 css 任务

    gulp.watch('css/*.css', ['css'])

    });

    // 使用 gulp.task('default') 定义默认任务

    // 在命令行使用 gulp 启动 css 任务和 auto 任务

    gulp.task('default', ['css', 'auto'])

7、运行gulp看结果

直接命令行运行gulp,退出监听按ctrl+c

B、图片压缩
1、安装图片压缩插件

npm install gulp-imagemin –save-dev
npm install imagemin-pngquant –save-dev

2、配置gulpfile.js

可以参考这个gulpt图片压缩

深度压缩

var gulp = require('gulp'),

imagemin = require('gulp-imagemin'), //确保本地已安装

pngquant = require('imagemin-pngquant');

gulp.task('testImagemin', function () { 
    gulp.src('src/img/*.{png,jpg,gif,ico}') 
        .pipe(imagemin({ 
                        progressive: true, 
                        svgoPlugins: [{removeViewBox: false}],//不要移除svg的viewbox属性 
                        use: [pngquant()] //使用pngquant深度压缩png图片的imagemin插件 
        })) 
                        .pipe(gulp.dest('dist/img')); 
});

添加执行程序

gulp.task('default',function(){ gulp.start('css','Imagemin'); });

C、Less

参考这篇文章gulp-less

字符串匹配

D、JS合并压缩
1、合并
安装插件

npm install gulp-concat --save-dev

编辑gulpfile.js

var gp = require('gulp');
var concat = require('gulp-concat');

gp.task("taskName",function(){
    // 把1.js和2.js合并为main.js,输出到dest/js目录下
    gp.src(['1.js','2.js']).pipe(concat('main.js')).pipe(gp.dest('./dest/js'));
})

命令行执行

gulp taskName

2、压缩

npm install gulp-uglify --save-dev
var gp = require('gulp');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
gp.task("taskName",function(){
    // 把1.js和2.js合并压缩为main.js,输出到dest/js目录下
    gp.src(['1.js','2.js']).pipe(concat('main.js')).pipe(uglify()).pipe(gp.dest('./dest/js'));
})

可以吧gulp在项目中生成的文件直接复制到新项目,这样就不用安装了,直接在该项目目录下运行就好。

基础常用配置

const plugins = require('gulp-load-plugins')()
const gulp = require('gulp');
// const args = require('yargs').argv; //用于获取启动参数,针对不同参数,切换任务执行过程时需要
const uglify = require('gulp-uglify') //js压缩
const sass = require('gulp-sass'); //将sass预处理为css
const cssMinify = require("gulp-minify-css"); //压缩css
const autoprefixer = require('gulp-autoprefixer'); //解决内核前缀
const imagemin = require('gulp-imagemin'); //压缩图片
const pngquant = require('imagemin-pngquant'); //深度压缩
const cache = require('gulp-cache'); //只压缩没压缩过的,压缩过的从缓存中获取
const rename = require('gulp-rename'); //重命名
const browserSync = require('browser-sync'); //监听文件的更改并且自动刷新页面
const concat = require('gulp-concat'); //合并文件
const notify = require('gulp-notify'); // 提示
const reload = browserSync.reload; //静态文件服务器,同时也支持浏览器自动刷新
// const ngConstant = require('gulp-ng-constant');
const del = require('del'); //删除build文件(当css,img,js出现删除操作的时候,虽然watch会监听,但是并不会删除相应文件。)



const paths = {
    appDir: "./app/",
    outputDir: "./dist/",
    sassSrc: {
        input: './app/css/*.scss',
        output: './dist/css/',
    },
    imgSrc: {
        input: ['./app/img/*.png', './app/img/*.jpg'],
        output: './dist/img/'
    },
    jsSrc: {
        input: ['./app/js/*.js'],
        output: './dist/js/'
    },
    watch: {
        sass: ['./app/**/*.scss'],
        css: ['./app/app.css'],
        html: ['app/**/*.html', 'app/*html'],
        js: ['app/**/*.js', '!app/**/*.js']
    },
    copySrc: ['./app/**/*', '!./app/scss', '!./app/scss/*.*', '!./app/**/*.scss', '!./app/**/package.json', '!./app/**/bower.json']
};

//JS处理
gulp.task('minifyjs', function() {
    return gulp.src(paths.jsSrc.input) //选择合并的JS
        .pipe(concat('order_query.js')) //合并js
        .pipe(rename({ suffix: '.min' })) //重命名
        .pipe(uglify()) //压缩
        .pipe(gulp.dest('dist/js')) //输出 
        .pipe(notify({ message: "js task ok" })); //提示
});




//转换成css,加css前缀,压缩
gulp.task('sass', function() {
    return gulp.src(paths.sassSrc.input)
        .pipe(sass())
        .pipe(autoprefixer({
            browsers: ['last 2 versions', 'Android >= 4.0'],
            cascade: false, //是否美化属性值(对齐) 默认:true
        }))
        .pipe(cssMinify()) //gulp-minify-css压缩比gulp-sass自带压缩效率好
        .pipe(gulp.dest(paths.sassSrc.output))
});


// 压缩图片
gulp.task('images', function() {
    return gulp.src(paths.imgSrc.input)
        .pipe(cache(imagemin({
            progressive: true,
            use: [pngquant()]
        })))
        .pipe(gulp.dest(paths.imgSrc.output))
});

gulp.task('default', ['sass', 'images', 'minifyjs']);
gulp.task('build', ['sass', 'images', 'minifyjs']);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容