码迷,mamicode.com
首页 > 其他好文 > 详细

gulp构建工作流

时间:2018-03-13 12:12:02      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:cal   图片   json   工作流   reload   UI   markdown   AC   pos   

gulp构建工作流以及gulpfile.js文件

### 步骤:
1. 命令行创建npm的配置文件
    a. npm init(这时候生成一个package.json的文件)
2. 添加一个gulp的依赖
    npm install gulp --save-dev 
3. 在项目根目录下添加一个gulpfile.js文件,这个是gulp的主文件,这个文件名是固定的

4. 在gulpfile中抽象我们需要做的任务
    需要做的任务有:1. LESS编译 压缩 合并
                    2. JS合并 压缩 混淆
                    3. img复制
                    4. html压缩
    这个时候要在src中写源文件,写完之后要将这些源文件发布到dist目录中
5. 添加less的编译需要插件,所以要在根目录下安装
    npm install gulp-less gulp-concat gulp-uglify gulp-cssnano gulp-htmlmin --save-dev
    (其中包括的功能有less编译,压缩合并,js合并压缩混淆,img复制)
    包下载好之后要将包导入
6.  启用自动化同步服务器的功能
    npm install browser-sync --save-dev 
7.完整的gulpfile.js文件代码

        ‘use strict‘;
        /**
         * 1. LESS编译 压缩 合并
         * 2. JS合并 压缩 混淆
         * 3. img复制
         * 4. html压缩
         */
        
        // 在gulpfile中先载入gulp包,因为这个包提供了一些API
        var gulp = require(‘gulp‘);
        var less = require(‘gulp-less‘);
        var cssnano = require(‘gulp-cssnano‘);
        
        // 1. LESS编译 压缩 --合并没有必要,一般预处理CSS都可以导包
        gulp.task(‘style‘, function() {
          // 这里是在执行style任务时自动执行的
          gulp.src([‘src/styles/*.less‘, ‘!src/styles/_*.less‘])
            .pipe(less())
            .pipe(cssnano())
            .pipe(gulp.dest(‘dist/styles‘)) //这里不用写styles文件夹,会自动创建
            .pipe(browserSync.reload({
              stream: true
            }));
        });
        
        var concat = require(‘gulp-concat‘);
        var uglify = require(‘gulp-uglify‘);
        
        // 2. JS合并 压缩混淆
        gulp.task(‘script‘, function() {
          gulp.src(‘src/scripts/*.js‘)
            .pipe(concat(‘all.js‘))
            .pipe(uglify())
            .pipe(gulp.dest(‘dist/scripts‘))
            .pipe(browserSync.reload({
              stream: true
            }));
        });
        
        // 3. 图片复制
        gulp.task(‘image‘, function() {
          gulp.src(‘src/images/*.*‘)
            .pipe(gulp.dest(‘dist/images‘))
            .pipe(browserSync.reload({
              stream: true
            }));
        });
        
        var htmlmin = require(‘gulp-htmlmin‘);
        // 4. HTML
        gulp.task(‘html‘, function() {
          gulp.src(‘src/*.html‘)
            .pipe(htmlmin({
              collapseWhitespace: true,
              removeComments: true
            }))
            .pipe(gulp.dest(‘dist‘))
            .pipe(browserSync.reload({
              stream: true
            }));
        });
        
        var browserSync = require(‘browser-sync‘);
        gulp.task(‘serve‘, function() {
          browserSync({
            server: {
              baseDir: [‘dist‘]
            },
          }, function(err, bs) {
            console.log(bs.options.getIn(["urls", "local"]));
          });
        
          gulp.watch(‘src/styles/*.less‘,[‘style‘]);
          gulp.watch(‘src/scripts/*.js‘,[‘script‘]);
          gulp.watch(‘src/images/*.*‘,[‘image‘]);
          gulp.watch(‘src/*.html‘,[‘html‘]);
        });

gulp构建工作流

标签:cal   图片   json   工作流   reload   UI   markdown   AC   pos   

原文地址:https://www.cnblogs.com/ccvtt/p/8554975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!