为什么要自动化
自动化是把源码合并压缩,合并之后就能减少http请求 ,压缩后能减少带宽,这是移动端十分需要的
自动化工具:gulp.js
优点:基于流、任务化
常用的API:src dest watch task pipe
- src :读取文件和文件夹
- dest:生成文件
- watch:监控文件
- task:定制任务
- pipe:流的方式处理文件
安装gulp
全局安装gulp
1 | cnpm install gulp -g |
初始化文件
1 | cnpm init |
当前目录 安装gulp
1 | cnpm install --save-dev gulp |
安装gulp插件
可以 批量安装 插件之间空格
1 | cnpm install --save-dev gulp-clean gulp-concat gulp-connect gulp-cssmin gulp-imagemin gulp-less gulp-load-plugins gulp-uglify open |
gulp.js搭建环境
创建文件gulpfile.js
:
1 | var gulp = require('gulp'); |
然后运行:
1 | gulp lib |
就会出现两个文件夹 build
dist
,里边是编译的文件
编译html:
先创建个文件夹 src>index.html 、 src>view>main.html
在gulpfile.js里边添加
1 | gulp.task('html', function() { |
然后再运行
1 | gulp html |
然后src里边的HTML文件会编译到dist/buile
中
json文件
json 跟上边HTML一样,在src中创建一个data文件,里边书写json文件
gulpfile.js
里边添加
1 | gulp.task('json', function() { |
在执行gulp json
就会在build dist 里边出现json文件
编译less 文件
首先在src下创建文件src>style>index.less
, src>style>main.less
index.less
为主要文件 里边引入外部需要的文件,
index.less:
1 | @import 'main.less'; |
main.less:
1 | @color:#fff; |
编译的时候只编译index.less
文件 ,
然后再配置文件gulpfile.js
里边添加:
1 | gulp.task('less', function() { |
执行命令gulp less
就会在build里边看到编译出来为css文件 和dist里边出现的css压缩文件
js文件
创建两个js文件 src>script>1.js src>script>2.js
里边写一些简单测试代码
在gulpfile.js里边添加
1 | gulp.task('js', function() { |
然后执行gulp js
,发现在build 和dist文件家中出现了script>index.js
image文件
图片的步骤跟上边的差不多,
最后还有个压缩图片
1 | gulp.task('image', function() { |
执行gulp image
为了不让每次的编译的文件重复硬性 ,就要配置一个清除
1 | // 清除重复的文件 |
然后每次build
dist
文件会被删除 等待重新编译
我们每次看效果都需要先清除之前的,然后在一个个打包编译,这样很麻烦,所以我们就需要一个指令,只需要每次执行一次 就可以把所有的任务都执行了 如下:
build
1 | // 总任务,构建任务 打包时只要执行下边就行 |
执行gulp build
构建本地服务器,自动刷新
这样还不够 ,我们需要的是只要执行一次, 就能直接在浏览器里查看效果 而且每次更改代码自动的会编译 ,浏览器会自动刷新。
首先得先创建一个本地访问的服务器
1 | // 启动服务器 本地环境 |
这个服务器需要设置本地url
,端口 还需要每次刷新的文件,它调用的build
来执行,这样就实现了本地的服务搭建!
然后我们还可以在简单一些:
1 | gulp.task('default', ['serve']); |
安装gulp-plumber插件
1 | cnpm install --save-dev gulp-plumber |
这个插件的作用一旦是 css,js编译的时候发生错误时 ,自动化不会停止
然后在gulpfile.js下每个编译 的task里边都添加
1 | .pipe($.blumer()) |
接着直接执行gulp
,服务器自动打开,浏览器会自动的打开页面,然后修改的文件无需刷新马上就可以在浏览器里查看,这样我们的构建环境就搭完了 !