gulp自动化构建项目过程

Posted js前端媛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gulp自动化构建项目过程相关的知识,希望对你有一定的参考价值。

gulp自动化构建项目过程

1.css压缩   gulp-clean-css

2.js压缩   gulp-uglify

3.js合并   gulp-concat

gulp借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入,gulp.src返回当前文件流至可用插件;异步任务支持;

压缩 js 代码可降低 js 文件大小,提高页面打开速度;gulp通过代码指令即可压缩

gulp是基于nodejs的自动任务运行器,

她能自动地完成 文件的测试,检查,合并,压缩,格式化,浏览器自动刷新,部署文件生成,并监听文件在改动后重复指定的这些步骤

安装完node以后,npm自动安装成功;

npm init初始化一个package.json文件

mkdir testgulp

cd testgulp

npm install -g gulp//全局安装gulp,-g表示在全局环境安装,以便任何项目都能使用它

npm install —-save-dev gulp //—-save-dev 来更新package.json文件,

更新 devDependencies 值,以表明项目需要依赖gulp。

Dependencies 可以向其他参与项目的人指明项目在开发环境和生产环境中的node模块依赖关系

创建gulpfile.js

var gulp = require('gulp');

var uglify = require('gulp-uglify');   (获取 uglify 模块(用于压缩 JS))

.pipe(uglify())      (压缩 js 文件)

gulp.task('script', function() {        =======================(创建压缩任务)

   gulp.src('js/myapp.js')// 1. 找到目标压缩文件位置

   .pipe(uglify())      // 2. 压缩文件

   .pipe(gulp.dest('dist/js/myjavascript')) // 3. 另存压缩后的文件,如果该文件夹不存在,将会自动创建它,执行gulp script命令后将可在根目录下看到dist/js/myjavascript文件夹并且有压缩后的myapp.js

});

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

关于gulpfile.js用法的注释

1.gulp.task(taskname, function(){taskContent})

2.gulp.src(filepath)

3.gulp.dest(filepath)

4.gulp.pipe() //管道,pipe可理解为将操作加入执行队列

5.gulp的watch用法(监视文件,并且可以在文件发生改动时候做一些事情)

------eg:gulp.watch('js/myapp.js',['script'])//监测myapp.js,譬如改动就执行任务script

注意:gulp.src('js/*.js')   ---------  (*表示所有的意思,这样一来就可以同时压缩多个js文件)

6.gulp的task(auto)功能  -----------(在命令行输入 gulp auto,自动监听 js/*.js 文件的修改后压缩js)

--------eg: gulp.task('auto',function(){

   gulp.watch('js/myapp.js',['script'])

})

7.使用 gulp.task('default', fn) 定义默认任务

gulp.task('default', ['script', 'auto']);

8.gulp task之runSequence

--------任务的顺序用runSequence来组织,把可以并行的的任务放在一个数组里面, 数组之间是串行的

runSequence = require('run-sequence')

runSequence(['clean'], ['copy-to-one-folder'], ['publish'], callback);


(备注: 加形参callback彻底变成串行)

关于task(任务)之间的相互依赖

定义一个所依赖的 task 必须在这个 task 执行之前完成

var gulp = require('gulp');

var uglify = require('gulp-uglify');

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

   gulp.src('js/myapp.js')

       .pipe(uglify())

       .pipe(gulp.dest('dist/js/myjavascript'))

});

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

       gulp.src('config.js')

       .pipe(uglify())

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

})

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

   gulp.watch('js/myapp.js',['script'])

})

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

gulpfile 的 task 依赖树


//gulp-rename 然后 pipe 到 dest 两次来实现

var gulp = require('gulp');

var rename=require('gulp-rename');

var DEST="build/";

var uglify = require('gulp-uglify');

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

   gulp.src('js/myapp.js')

   .pipe(gulp.dest(DEST))

       .pipe(uglify())

       .pipe(rename({extname:'.min.js'}))

       .pipe(gulp.dest(DEST))

});

使用Gulp实现自动监测页面刷新

Gulp-connect;通过watch任务和livereload设置实现自动刷新的:npm install -g gulp-connect  

// 实时更新浏览器界面

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

   gulp.watch(['views/main.html'], ['html']);  

});  

//使用connect启动一个Web服务器

var

livereload = require('gulp-livereload'),

connect = require('gulp-connect');

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

   connect.server({  

       livereload: true  

   });  

});  

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

   gulp.src('views/main.html')  

       .pipe(connect.reload());  

});  

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

   gulp.watch('js/*/*.js',['script']);

   gulp.watch(['views/main.html'], ['html']);

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

})

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



var gulp = require('gulp'),

livereload = require('gulp-livereload'),

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

   livereload.listen();

   gulp.watch(['src/main/webapp/ejtapp/**/*.*'],function(event){

           livereload.changed(event.path);  

   });  

});

使用Gulp实现执行gulp命令即自动加载打开页面

var webserver = require('gulp-webserver'),

//需要执行npm install gulp-webserver命令

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

 gulp.src( '.' ) // 服务器目录(.代表根目录)

 .pipe(webserver({ // 运行gulp-webserver

   livereload: true, // 启用LiveReload

   open: true // 服务器启动时自动打开网页

 }));

});

把需要发布的从多处汇总到一个目录dist/src

把需要发布的从多处汇总到一个目录dist/src

gulp.task("copy-to-one-folder", function(){

gulp.src(["c:/labs3/TestLab/NodeServer/routes/**/*"], {base: "c:/labs3/TestLab/"})

.pipe(gulp.dest('dist/src'));


return gulp.src(["c:/labs3/TestLab/HomeFinder/**/*"], {base:"c:/labs3/TestLab/HomeFinder/"})

.pipe(gulp.dest('dist/src'));

});

关于gulp如何将本地项目自动打包部署至远程服务器

var gulp = require('gulp'),

sftp=require('gulp-sftp'),//gulp自动远程上传至服务器

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

 return gulp.src('release/**')

 .pipe(sftp({

       host:'182.92.102.97',

       port:'9393',

       remotePath:'./testejtfront',

       user:'root',

       password:'Zxxydy123'

 }))

})

gulp.task('default',['webserver','jshint','copy-to-one-folder','test','publish','connect','auto','script','autosftp'])


参考链接:http://wiki.jikexueyuan.com/project/gulp-book/

http://www.gulpjs.com.cn/docs/

http://www.tuicool.com/articles/nAzquyE

http://www.tuicool.com/articles/IZR3AfV

http://www.cnblogs.com/GameEngine/p/5229576.html


以上是关于gulp自动化构建项目过程的主要内容,如果未能解决你的问题,请参考以下文章

gulp

Gulp-构建工具 相关内容整理

构建工具gulp之入门指南

gulp自动化构建工具使用总结

自动化构建工具gulp简单介绍及使用

GULP