首先咱們瞭解一下什麼是gulp
, gulp是前端自動化構建工具,在開發過程當中不少重複的任務,咱們均可以正確的使用gulp來完成,gulp基於nodejs,使用gulp能夠作不少事情
例如gulp轉less語法,js壓縮,css壓縮,html壓縮,下面我大致說一下這個gulp的主流程javascript
nodejs
環境.gulp
,而後你每次使用gulp的項目中還要安裝一下gulp
以及你在項目中所用到的插件也安裝好.gulpfile.js
,並在裏面寫好配置信息,gulp
任務就ok了gulp
的前提是你已經經有了nodejs
的運行環境,nodejs
,若是輸出版本號,說明已經安裝了nodenode -v
npm init
,而後再全局安裝gulpnpm install -g gulp-cli
npm install gulp --save-dev
解釋一下:--save-dev是package.json文件中的依賴,最好加上css
gulpfile.js
的文件,裏面寫咱們定義的任務,例如如下代碼是對less轉換爲css的gulp 任務名
,gulp也給咱們定義了一個默認任務名default
,若是任務名爲default
,直接在命令行輸入gulp
便可先引入包 const gulp = require('gulp') //這個每次都要引入,在你使用插件的時候 const less = require('gulp-less') // 定義任務對less進行轉換,myless是你本身定義的任務名 gulp.task('myless', function() { // 1.匹配到要處理的文件,目錄src/less/*.less下的全部後綴名爲`.less`的全部文件 gulp.src('src/less/*.less') // 2.對less語法進行轉換! .pipe(less()) // 3.指定文件的輸出目錄dist/css .pipe(gulp.dest('dist/css')) })
3.1 轉換less語法html
安裝npm install gulp-less --save-dev
前端
const less = require('gulp-less') // 定義任務對less進行轉換,myless是你本身定義的任務名 gulp.task('myless', function() { // 1.匹配到要處理的文件,目錄src/less/*.less下的全部後綴名爲`.less`的全部文件 gulp.src('src/less/*.less') // 2.對less語法進行轉換! .pipe(less()) // 3.指定文件的輸出目錄dist/css .pipe(gulp.dest('dist/css')) })
3.2 對 js 語法進行壓縮和混淆java
安裝npm install gulp-uglify --save-dev
node
const uglify = require('gulp-uglify') // 對js請求進行壓縮和混淆 // 定義任務 gulp.task('myscript', function() { // 1.匹配要處理的文件 gulp.src('src/js/*.js') // 2.將js代碼壓縮混淆 .pipe(uglify()) .pipe(gulp.dest('dist/js')) })
3.3 對html代碼進行壓縮webpack
安裝npm install gulp-htmlmin --save-dev
web
// 對html進行壓縮的包 const htmlmin = require('gulp-htmlmin') // 對html進行壓縮 // 定義任務 gulp.task('myhtml', function(){ // 1.匹配到要處理的html文件 gulp.src('src/*.html') // 2.對html進行壓縮! .pipe(htmlmin({ collapseWhitespace:true // 去除空白符 })) // 3.輸出 .pipe(gulp.dest('dist')) })
3.4 對css進行壓縮npm
安裝 npm install gulp-cssnano --save-dev
json
const cssnano = require('gulp-cssnano') // 定義任務 gulp.task('mycss', function(){ // 1. gulp.src('src/css/*.css') .pipe(cssnano())// 消化,轉換,壓縮 .pipe(gulp.dest('dist/css')) })
gulp.task('任務名', function(){ // 任務內容 })
gulp 任務名
gulp.task('任務名', function(){ // 如: './style.less' // 如: './*.less' // 如: '*.*' // 當前目錄的下全部文件! // 如: **/*.* // 當前目錄全部目錄下的全部文件 這個參數還能夠是一個數組 gulp.src(['./stlyle.less','./test.less','*.*']) gulp.src('路徑字符串') .pipe(less()) // 語法轉換 .pipe(gulp.dest('文件輸出目錄')) })
gulp.dest('文件輸出目錄')
// 咱們還自動監視文件變化,而後執行相應任務 gulp.task('mywatch', function(){ // 監視指定文件的變化,若是變化就執行相應的任務! gulp.watch('src/**/*.*',['mycss','myhtml','myscript','myless']) })注意:這裏輸入的命令行的代碼是
gulp 任務名
,在上面的代碼中是gulp mywatch
,千萬不要和webpack混淆了gulp.run
// 咱們能夠新建一個任務,用這個任務去啓動其餘任務! // 若是在命令行輸入gulp 會直接執行當前目錄的名爲default的任務 gulp.task('default' ,function(){ //console.log(1111) // run方法是用來執行其餘任務 // 參數是任務名,若是寫成數組形式,那麼數組中的元素就是要執行的任務名 gulp.run(['mycss','myhtml','myscript','myless']) })
假設你有好多文件須要打包,這樣作的目的是爲了你輸入命令的時候,不用再輸入好多文件名來執行了,直接輸入gulp
,就是新建一個任務default
,用這個任務去啓動其餘任務
npm install browser-sync --save-dev
//啓動boswerSync服務 browserSync.init({ server:"./src", //指定網站目錄,訪問時不須要 ,就是幫你自動刷新瀏覽器http://localhost:3000/後面 //的目錄,能夠省略不寫,*這裏的路徑必定要寫對* files:["./src/**/*.*"] })
和watch合起來的代碼:
//這個broserSync是自動幫你刷新瀏覽器 const browserSync = require('browser-sync') //咱們還自動監視文件變化,而後執行相應任務 gulp.task("mywatch",function(){ //啓動boswerSync服務 browserSync.init({ server:"./src", //指定網站目錄,訪問時不須要 //輸入這個目錄(網站根目錄就是端口號後面的目錄的父級) files:["./src/**/*.*"] }) // 監視指定文件的變化,若是變化就自動執行相應的任務(想監視誰,就在數組裏寫誰) gulp.watch('src/**/*.*',['myless']) })
注意:若是更改了gulpfile.js文件要重啓咱們的任務!