最近須要對項目進行優化,主要是對js的壓縮合並和css文件的壓縮,查找相關資料以後發現gulp能夠實現相關的功能,特此分享一下使用心得。css
1.安裝gulphtml
gulp是基於Node.js的前端構建工具。因此首先須要安裝nodejs,安裝nodejs。前端
完成nodejs安裝以後,須要使用npm安裝gulp。node
先安裝全局gulpgit
npm install -g gulp
而後在項目根目錄下安裝本地gulp。github
此時項目根目錄下會多出下面這個文件夾 node_modulesnpm
好的,如今gulp已經安裝完成了,可是gulp自己不提供js壓縮合並等功能,須要使用gulp的相關插件。目前只須要完成js壓縮合並和css文件壓縮的功能,先安裝相應的插件:gulp
1.css壓縮 gulp-clean-css前端構建
2.js壓縮 gulp-uglify工具
3.js合併 gulp-concat
因爲壓縮以前須要對js代碼進行代碼檢測,壓縮完成以後須要加上min的後綴,咱們還須要安裝另外兩個插件:
4.重命名 gulp-rename
5.js代碼檢測 gulp-jshint (或gulp-jslint)
(更多插件能夠查看 http://gulpjs.com/plugins/ )
在項目根目錄下執行如下命令:
npm install gulp-clean-css gulp-uglify gulp-concat gulp-rename --save-dev
npm install jshint gulp-jshint --save-dev
安裝好的插件會出如今上面提到的node_modules文件夾中。
2.使用gulp
ok,如今可使用gulp了,在項目根目錄下建立gulpfile.js文件。
在gulpfile.js中添加如下代碼
var gulp = require('gulp'),
//代替 minifycss
cleanCSS = require('gulp-clean-css'),
//minifycss = require('gulp-minify-css'), concat = require('gulp-concat'), uglify = require('gulp-uglify'), rename = require('gulp-rename'), jshint=require('gulp-jshint'); //語法檢查 gulp.task('jshint', function () { return gulp.src('js/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); //壓縮css gulp.task('minifycss', function() { return gulp.src('css/*.css') //須要操做的文件 .pipe(rename({suffix: '.min'})) //rename壓縮後的文件名 .pipe(cleanCSS({compatibility: 'ie7'})) //執行壓縮
.pipe(gulp.dest('Css')); //輸出文件夾 }); //壓縮,合併 js gulp.task('minifyjs', function() { return gulp.src('js/*.js') //須要操做的文件 .pipe(concat('main.js')) //合併全部js到main.js .pipe(gulp.dest('js')) //輸出到文件夾 .pipe(rename({suffix: '.min'})) //rename壓縮後的文件名 .pipe(uglify()) //壓縮 .pipe(gulp.dest('Js')); //輸出 }); //默認命令,在cmd中輸入gulp後,執行的就是這個任務(壓縮js須要在檢查js以後操做) gulp.task('default',['jshint'],function() { gulp.start('minifycss','minifyjs'); });
上述代碼中的相關方法能夠查看 gulp API docs
在文件根目錄下執行gulp命令:
(若是Js文件有問題時,會出現相應的error提示,按照提示的錯誤信息修改便可)
bingo,如今能夠在css文件夾中看到壓縮好的css文件,在js中能夠看到合併壓縮好的main.min.js 。任務完成,只須要將html中css,js引用的路徑修改爲新的路徑便可。
以上即是使用gulp的心得體會,gulp是一個正在快速成長的構建工具,他還有不少其餘好用的工具(例如watch功能,能夠實時監視文件的變化,自動完成相關操做)。之後能夠繼續關注、研究gulp,更多的應用gulp到前端開發中。
PS: 2016.9.12 更新了 gulp-jshint 的獲取方式,用 gulp-clean-css 替換了 gulp-minify-css