目前最知名的构建工具: Gulp
、Grunt
、NPM + Webpack
;css
grunt
是前端工程化的先驱gulp
更天然基于流的方式链接任务Webpack
最年轻,擅长用于依赖管理,配置稍较复杂
推荐使用Gulp
,Gulp
基于nodejs
中stream
,效率更好语法更天然,不须要编写复杂的配置文件html
基础安装Gulp
是基于Node.js
的,须要要安装Node.js
一、为了确保依赖环境正确,咱们先执行几个简单的命令检查。前端
leo@leo-HP-Pavilion-dv4-Notebook-PC:~$ node -v v4.2.6
Node
是一个基于Google V8
引擎创建的一个解释器
检测Node
是否已经安装,若是正确安装的话你会看到所安装的Node
的版本号
二、接下来看看npm
,它是node
的包管理工具,能够利用它安装gulp
所需的包node
leo@leo-HP-Pavilion-dv4-Notebook-PC:~$ npm -v 3.5.2
这一样能获得npm
的版本号,装Node
时已经自动安装了npm
三、开始安装Gulp
git
npm install -g gulp leo@leo-HP-Pavilion-dv4-Notebook-PC:~$ gulp -v [20:37:10] CLI version 3.9.1
获得gulp
的版本号,确认安装成功
四、切换到你的在项目根文件夹下,运行chrome
npm install gulp --save-dev //将具体的gulp功能插件局部安装项目下
五、安装gulp
功能插件依赖包npm
npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename--save-dev
gulp
功能模块的文件会放在项目所在的目录的./node_modules
下
六、咱们目前先使用一些简单的功能:json
检查Javascript
gulp
编译Sass
文件前端工程化
合并Javascript
压缩合并并重命名Javascript
新建gulpfile.js
配置文件放在项目根目录下,整个项目目录结构以下:
. ├── .git 经过git进行版本控制,项目自动生成这个文件 ├── node_modules 组件包目录 ├── dist **发布环境** │ ├── css 样式文件(style.css style.min.css) │ ├── images 图片文件(压缩图片/合并后的图片) │ ├── index.html 静态页面文件(压缩html) │ └── js js文件(main.js main.min.js) ├── gulpfile.js gulp配置文件 ├── package.json 依赖模块json文件,在项目目录下npm install会安装项目全部的依赖模块,简化项目的安装程序 └── src **开发环境** ├── images 图片文件 ├── index.html 静态文件 ├── js js文件 └── sass sass文件
如今咱们开始编写gulpfile.js
文件以分配gulp
执行任务,gulpfile.js
内容以下:
// 引入gulp var gulp = require('gulp'); // 引入组件 var jshint = require('gulp-jshint');//检查js var sass = require('gulp-sass'); //编译Sass var concat = require('gulp-concat');//合并 var uglify = require('gulp-uglify');//压缩JS var rename = require('gulp-rename');//重命名 // 检查js脚本的任务 gulp.task('lint', function() { gulp.src('./js/*.js') //可配置检查脚本的具体名字 .pipe(jshint()) .pipe(jshint.reporter('default')); }); // 编译Sass gulp.task('sass', function() { gulp.src('./scss/*.scss') .pipe(sass()) .pipe(gulp.dest('./css')); }); // 合并,压缩js文件 // 找到js/目录下的全部js文件,合并、重命名、压缩,最后将处理完成的js存放在dist/js/目录下 gulp.task('scripts', function() { gulp.src('./js/*.js') .pipe(concat('all.js')) .pipe(gulp.dest('./dist')) .pipe(rename('all.min.js')) .pipe(uglify()) .pipe(gulp.dest('./dist')); console.log('gulp task is done');//自定义提醒信息 }); .... // 其余任务相似 // 定义默认任务,执行gulp会自动执行的任务 gulp.task('default', function(){ gulp.run('lint', 'sass', 'scripts'); // 监听js文件变化,当文件发生变化后会自动执行任务 gulp.watch('./js/*.js', function(){ gulp.run('lint','scripts'); }); });
七、如今,回到命令行窗口,能够直接运行gulp
任务
gulp 这将执行定义的default任务,就和如下的命令式同一个意思 gulp default 固然,咱们能够运行在gulpfile.js中定义的任意任务,好比,如今单独运行sass任务: gulp sass
八、编译会显示Finished
,若是你的JS
有什么很差的地方它会提醒,避免一些没必要要的错误,十分贴心
常见提醒:
禁止在同一行声明多个变量 请使用 ===/!==来比较true/false或者数值 使用对象字面量替代new Array这种形式 不要使用全局函数 Switch语句必须带有default分支 函数不该该有时候有返回值,有时候没有返回值。 For循环必须使用大括号 If语句必须使用大括号 for-in循环中的变量 应该使用var关键字明确限定做用域,从而避免做用域污染
九、gulp
的插件数量不少,能够根据本身的须要进行添加任务
经常使用的gulp
插件参考
gulp-imagemin: 压缩图片 gulp-ruby-sass: 支持sass,安装此版本须要安装ruby gulp-minify-css: 压缩css gulp-jshint: 检查js gulp-uglify: 压缩js gulp-concat: 合并文件 gulp-rename: 重命名文件 gulp-htmlmin: 压缩html gulp-clean: 清空文件夹 gulp-livereload: 服务器控制客户端同步刷新(需配合chrome插件LiveReload及tiny-lr)