全部的环境都是在 node 安装好的基础上执行的。 node -v 查看node的安装状况。npm -v查看npm 的安装状况.css
gulp自动化构建经常使用参数html
一、src 读取文件或者文件夹node
二、dest 生成文件也就是写文件npm
三、watch 检测文件json
四、tesk 指定任务gulp
五、pipe 用流的方式处理 gulp.浏览器
gulp建立一个完整的项目的目录结构以下app
解释:less
bower_components 这个文件下边放的是 经过bower安装的第三方的js等。工具
build : 项目整合目录,通常在这里整合全部的代码,不压缩。
dist : 项目发布目录,也是压缩全部文件后的。
src : 项目源文件目录,这里放置的都是源文件。
test : 这个是编写自动化测试的
一、在终端进入项目根目录,安装bower.
bower init
初始化Bower,生成bower.json文件,而后安装须要的的插件以及第三方文件例如angular 执行
bower install - - save angular
具体查看 bower 的使用方法。
二、安装查看gulp,在项目根目录下。
全局安装gulp npm install --global gulp
而后建立配置文件 npm init 初始化并建立 package.json文件 npm install --save-dev gulp 将Node的配置环境装进配置文件中。
而后安装须要的插件
npm install xxx —save-dev将文件自动写进配置文件中。
通常经常使用的建立整站的有这些,多个的话能够将插件以空格的形式分开
npm install gulp-clean gulp-concat gulp-connect gulp-cssmin gulp-imagemin gulp-less gulp-load-plugins gulp-uglify open -—save-dev
而后则是gulpfile.js配置文件的编写。具体为下
//引入gulp var gulp = require('gulp'); //这样的话 其余的模块能够直接使用 $ 符号来引入 var $ = require('gulp-load-plugins')(); var open = require('open'); //定义目录路径 var app = { //源代码,文件目录 srcPath: 'src/', //文件整合以后的目录 devPath: 'build/', //项目,发布目录上产部署 prdPath: 'dist/' }; //经过bower安装的插件,须要拷贝到 devPath prdPath中 gulp.task('lib',function(){ // /**/* 读取这个文件夹下边的全部的文件或者文件夹 gulp.src('bower_components/**/*') //读取完整后进行操做 西安拷贝到整合目录 并重命名,在拷贝到生产目录并重命名 .pipe(gulp.dest(app.devPath + 'vendor')) .pipe(gulp.dest(app.prdPath + 'vendor')) .pipe($.connect.reload()); //文件更改后自动变异 并执行启动服务从新打开浏览器 }); //将 html 拷贝到 devPath prdPath中 gulp.task('html',function(){ gulp.src(app.srcPath + '**/*.html') .pipe(gulp.dest(app.devPath)) .pipe(gulp.dest(app.prdPath)) .pipe($.connect.reload()); }); //将 模拟的json 文件 拷贝到 devPath prdPath中 gulp.task('json',function(){ gulp.src(app.srcPath + 'data/**/*.json') .pipe(gulp.dest(app.devPath + 'data')) .pipe(gulp.dest(app.prdPath + 'data')) .pipe($.connect.reload()); }); //将 index.less 文件 拷贝到 devPath prdPath中,index.less引入了全部的其余的less gulp.task('less',function(){ gulp.src(app.srcPath + 'style/index.less') .pipe($.less()) .pipe(gulp.dest(app.devPath + 'css')) .pipe($.cssmin()) .pipe(gulp.dest(app.prdPath + 'css')) .pipe($.connect.reload()); }); // 拷贝 js 文件 将全部的源文件中的js 文件整合成index.js 而后拷贝过去 gulp.task('script',function(){ gulp.src(app.srcPath + 'script/**/*.js') .pipe($.concat('index.js')) .pipe(gulp.dest(app.devPath + 'js')) .pipe($.uglify()) .pipe(gulp.dest(app.prdPath + 'js')) .pipe($.connect.reload()); }); //拷贝 压缩 图片 最后放到发布目录下 gulp.task('image',function(){ gulp.src(app.srcPath + 'image/**/*') //江源图片放到整合目录下,在压缩放到生产目录下 .pipe(gulp.dest(app.devPath + 'image')) .pipe($.imagemin()) .pipe(gulp.dest(app.prdPath + 'image')) .pipe($.connect.reload()); }); //总的方法 gulp.task('build',['image', 'script', 'less', 'json', 'html', 'lib']); //清除旧文件,每次更新的时候 gulp.task('clean',function(){ gulp.src([app.devPath,app.prdPath]) .pipe($.clean()); }) //编写服务 gulp.task('serve',['build'], function() { $.connect.server({ //服务起来的入口 root: [app.devPath], //文件更改后自动刷新页面 livereload: true, //端口号 port: 1234 }); // 在 命令工具中执行 gulp serve 就至关因而启动了服务 //自动打开浏览器 open('http://localhost:1234'); //咱们但愿更改了文件,就自动编译,而且打包等而后打开浏览器 gulp.watch('bower_components/**/*' , ['lib']); //监听 script 下边的 js 文件,并执行 script 方法 gulp.watch(app.srcPath + 'script/**/*.js', ['script']); gulp.watch(app.srcPath + '**/*.html', ['html']); gulp.watch(app.srcPath + 'data/**/*.json', ['json']); gulp.watch(app.srcPath + 'style/**/*.less', ['less']); gulp.watch(app.srcPath + 'image/**/*', ['image']); //这样文件变动了就会自动构建 }); //默认执行的任务,直接 执行 gulp 变行了。都编写完成后再终端 执行 gulp 即可以了。 gulp.task('default', ['serve']);
这样利用gulp建立一个完整的项目流程就结束了