gulp中css和js壓縮以及處理報錯(淺顯易懂,基礎(chǔ)篇,大神繞行)

由于鄙人才疏學(xué)淺,所以只能用最直白的方法來敘述比較簡單的事情。廢話不多,開始步入本文正題吧!

當(dāng)我們網(wǎng)站項目做完的時候,會發(fā)現(xiàn)項目出現(xiàn)一堆的js以及css等等。我們?nèi)绾魏侠淼貙⑺鼈冋系揭黄?,考慮到方便易行我選用了gulp。它所實現(xiàn)的效果就是將所有的js文件整合到一個js文件里面,并且壓縮成一行。

首先我們要了解,gulp是在node環(huán)境下運行的,有了node,我們下載一個git用來輸入命令就可以了。這個大家都可以在相應(yīng)的網(wǎng)站上找到答案,不多介紹nodejs了,加快實現(xiàn)目標(biāo)的步伐。

第一步:我們打開git的命令行工具,去命令行npm install -g gulp(安裝全局gulp)。

安裝一下全局的gulp 等待幾分鐘之后就下載好了,然后輸入gulp –v來查看一下gulp是否存在以及版本是多少。


(下面是可選步驟,所以用斜體來影響一下閱讀速度,希望用到的同學(xué)們仔細(xì)看看):

第1.5步:

如果我們有碼云或者githup線上的項目的話,我們需要配置一下gulp;(這里我用碼云舉個例子)

輸入npm

init開始配置gulp,把下面的幾個參數(shù)設(shè)置好。

name:(碼云)

Sorry,name can only contain URL-friendly characters.

name:(碼云) miaoshu

version:(1.0.0)

description:ceshi gulp

entrypoint: (index.js)

testcommand:

gitrepository:

keywords:

author:zhurui

Is this ok? (yes) y這里的時候輸入yes或者y,確定配置。此時會出現(xiàn)一個package.json文件里面是剛剛的配置。



好了,下面讓我們接著說我們第二步需要來做什么:

第二步:在我們項目的文件夾中(根目錄下)打開命令行。輸入命令npm install --save-dev gulp(下載本地gulp),等待下載完畢會出現(xiàn)一個本地的文件夾node_modules文件夾。這就說明我們本地的gulp已經(jīng)下載好了。


這個文件出現(xiàn)了就表示局部gulp下載好了


第三步:就在上圖這個根目錄中,我們新建一個js,名字叫g(shù)ulpfile.js

這里面是用來寫我們gulp運行的一些行為,比如合并,壓縮,重命名啊,等等。先配置,到后面一看就明白了


這個文件是自己新建的

到了第四步我們要了解我們需要做什么:

在項目的根目錄中的命令行中,輸入我們要用到的東西,這些都是局部的:

如果想要壓縮js代碼:$ npm install --save-devgulp-uglify

如果想要壓縮css代碼:$ npm install--save-dev gulp-minify-css

如果想要刪除文件夾和文件的命令:$ npm install--save-dev gulp del

如果想要less轉(zhuǎn)換為css插件:$ npm install--save-dev gulp-less

如果想要合并文件:$ npm install --save-devgulp-concat

如果想要給文件重新命名:$ npm install --save-devgulp-rename

第四步:按需求下載好自己所需要的局部組件,然后下一步就是要去gulpfile.js里面配置我們gulp運行時候的行為了

首先引入剛剛下載好的組件:

//引入gulp

var gulp = require('gulp');

//引入組件(這里面有:重命名,壓縮js的組件,合并js的組件)

var concat = require('gulp-concat');

var uglify = require('gulp-uglify');

var rename = require('gulp-rename');

組件引入之后,我們開始寫我們gulp的行為了,也就是我們運行g(shù)ulp的時候他需要怎么做。

//舉個例子:這是把js壓縮并且合并的一個行為

其中:task(任務(wù)):每一個gulp的命令都是一個任務(wù)。

src(引入):引入需要構(gòu)建的文件路徑。

dest(輸入):輸出文件的路徑。

watch(監(jiān)聽):監(jiān)聽文件的變化,可以自動執(zhí)行任務(wù)。

//我給這個行為起了一個名字為” scripts”,然后緊接著一個回掉函數(shù)記錄他的行為

gulp.task('scripts', function() {

//引入js文件夾下面的所有.js格式的文件,*代表全部,當(dāng)然也可以針對到某一個js文件。

gulp.src('./js/*.js')

//concat就是我們下載好,然后還引進來的那個組件,合并他們所有的js文件合并玩了名字叫做all.js

.pipe(concat('all.js'))

//合并完之后我將他輸出到根目錄下的一個新的文件夾“dist“里面

.pipe(gulp.dest('./dist'))

//雖然所有js文件合并到了all.js里面,但是他們現(xiàn)在格式還是“生前“的樣子,我需要將它們變?yōu)橐恍?!這時候就用到了一個重命名:rename我給all.js起了一個名字叫做all.min.js,緊接著用到了引入的js壓縮組件uglify(),然后那么多行的js文件就變?yōu)榱艘粌尚械?/p>

.pipe(rename('all.min.js'))

.pipe(uglify())

//處理完之后我也將他輸出到根目錄下的文件夾“dist“里面

.pipe(gulp.dest('./dist'));

});

額,這時候在gulpfile.js文件里面相當(dāng)于記錄了兩種行為了,一種是引入,一種是操作不要以為這時候就大功告成了,還有最重要的一部:我們需要繼續(xù)寫一個默認(rèn)的任務(wù)

//默認(rèn)任務(wù)default,這個名字是必不可少的

gulp.task('default',function(){

//run一下(默認(rèn)執(zhí)行的是我寫的名字為'scripts'進行js代碼壓縮的行為)

gulp.run('scripts');

//監(jiān)聽文件變化(如果js文件有變化,就會執(zhí)行下面的行為)

gulp.watch('./js/*.js', function(){

gulp.run('lint', 'sass', 'scripts');

});

});

有人要問,如果不寫默認(rèn)行為可以不,回答是當(dāng)然不可以,如果不寫默認(rèn)行為會報錯的??次野阉⑨尩?/p>


注釋掉之后在git命令行中運行g(shù)ulp會報錯
沒有默認(rèn)任務(wù)運行所有g(shù)ulp任務(wù)的報錯信息

報錯信息竟然是'default',我js文件中并沒有提到過'default'的。所以說,這是初學(xué)者最容易進入的一個誤區(qū)之一了。我們是必須要寫默認(rèn)行為的。


好了,我們整體來看一下,我們做好的配置長什么樣子:

三大塊

總共三大步驟,引入,任務(wù),默認(rèn)任務(wù)。很簡單的。

最后一步:運行

既然都已經(jīng)配置好了,我們就來運行一下吧,回到項目的根目錄中,我們打開git的命令行,輸入gulp并且回車,很好,出現(xiàn)這些時間表示我們已經(jīng)成功了。然后我們會看到根目錄自己出現(xiàn)了一個名字叫做dist的文件夾,小心翼翼的打開里面,驚喜的發(fā)現(xiàn)了all.js以及all.min.js兩個文件靜靜的躺在里面。

成功的標(biāo)志


成功的直接標(biāo)志

開心之際不要忘了一個重要的事情:我們?nèi)グ阉许撁嬷械膕cript指向一個文件夾!


切記切記要修改引入js的路徑哦

打開頁面:


完美,js效果可用

可以正常運行,完美!

在此還要提到最后一步:運行。

如果運行:gulp是執(zhí)行g(shù)ulpfile.js里面所有的任務(wù)。如果此時有一個壓縮css的任務(wù),有一個壓縮js的任務(wù),分別叫做script和css


兩個任務(wù)的名字

我們只想壓縮一下js,那么就執(zhí)行g(shù)ulp+任務(wù)名稱也就是:$ gulp script完成?。。。。≈粫嚎sjs,不回去動css的代碼。



壓縮成了這樣

壓縮的親爸爸都認(rèn)不出來了~

(本文章適合入門,sass,less壓縮,圖片壓縮都是需要以上的步驟,只不過引入的組件不同而已,希望我講的大家可以看得懂。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1、gulp的安裝 首先確保你已經(jīng)正確安裝了nodejs環(huán)境。然后以全局方式安裝gulp: npm install...
    F_imok閱讀 2,401評論 1 11
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學(xué)...
    依依玖玥閱讀 3,185評論 7 55
  • 在現(xiàn)在的前端開發(fā)中,前后端分離、模塊化開發(fā)、版本控制、文件合并與壓縮、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,489評論 1 32
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學(xué)...
    小裁縫sun閱讀 952評論 0 3
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學(xué)...
    井皮皮閱讀 1,324評論 0 10