gulp菜鳥級零基礎詳細教程
本文轉載自:https://www.cnblogs.com/weichao1996/p/8620652.html
相信大家一定聽說過gulp或者webpack,grunt等前端構建工具。gulp是前端開發過程中對程式碼進行構建的工具,是自動化專案的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重複的任務能夠使用正確的工具自動完成;使用它,我們不僅可以很愉快的編寫程式碼,而且大大提高我們的工作效率。 它能自動化地完成javascript/coffee/sass/less/html/image/css 等檔案的的測試、檢查、合併、壓縮、格式化、瀏覽器自動重新整理、部署檔案生成,並監聽檔案在改動後重復指定的這些步驟。
言歸正傳這篇是gulp菜鳥級別的教程。大佬們覺得太簡單了請不要噴我,畢竟我也是一個菜鳥。寫下這篇筆記,不是為了證明什麼,就是方便我以後忘了時候回顧看一下。好,廢話不多說 下面開始了
1、node環境搭建
想要使用gulp,首先你得在你得電腦裡面安裝node.js,因為gulp是基於Nodejs的自動任務執行器。這個我就不詳細介紹怎麼安裝了吧,網上教程一搜一大把。相信正在使用gulp的朋友,也知道怎麼安裝node.js
2、使用命令列工具
開發的環境安裝好了以後,接下來就是通過命令列來下載相應開發的模組包。什麼是命令列?命令列在OSX是終端(Terminal),在windows是命令提示符(Command Prompt)windows系統下 WIN+R開啟命令列工具,在裡面輸入cmd,回車。如下圖:
3、選裝cnpm(淘寶映象)
因為npm安裝外掛是從國外伺服器下載,受網路影響大,可能出現異常.
3.1、官方網址:http://npm.taobao.org;
3.2、安裝:命令提示符執行npm install cnpm -g --registry=https://registry.npm.taobao.org
; 注意:安裝完後最好檢視其版本號cnpm -v或關閉命令提示符重寫開啟,安裝完直接使用有可能會出現錯誤;
注:cnpm跟npm用法完全一致,只是在執行命令時將npm改為cnpm(以下操作將以cnpm代替npm)。
4、全域性安裝gulp
4.1
4.2、安裝:命令提示符執行
1 |
|
4.3、檢視是否正確安裝:命令提示符執行gulp -v,出現版本號即為正確安裝。
4.4、依賴安裝: npm install gulp --save-dev,這個可以在你的當前的專案目錄下,開啟命令列工具進行依賴安裝。下面我們會在介紹packge.json檔案當中介紹為什麼需要依賴安裝
5、新建package.json檔案
5.1、package.json檔案是基於node.js專案必不可少的配置檔案,它是存放在專案根目錄的普通json檔案,裡面有你各個依賴安裝模組外掛的版本資訊,以至於你能清楚看到你安裝了那些模組。如下圖我安裝很多模組以後的json檔案。
5.2、配置packge.json檔案
1 |
|
注意:初始化packge.json檔案必須在你專案的根目錄下開啟命令列工具,執行初始化程式碼。(怎麼在當前目錄下開啟命令列工具?shift+右鍵。當然,win10系統的命令列工具被微軟改版了,叫Powershell,作用還是一樣)
6、新建gulpfile.js檔案
既然我們要使用gulp,我們就需要建立一個gulpfile.js檔案,gulpfile.js是gulp專案的配置檔案,是位於專案根目錄的普通js檔案。gulp的開發程式碼都寫在這個裡面的
js程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
|
7、執行gulp
7.1、說明:命令提示符執行gulp 任務名稱;
7.2、編譯less:命令提示符執行gulp testLess;
7.3、當執行gulp default或gulp將會呼叫default任務裡的所有任務[‘testLess’,’elseTask’]
8、使用webstorm執行gulp任務
9、使用vscode執行gulp任務
vcode是微軟出的一款輕量級程式碼編輯器,免費而且功能強大,對JavaScript和NodeJS的支援非常好,自帶很多功能,例如程式碼格式化,程式碼智慧提示補全、Emmet外掛等。
在vscode上我們想要簡單的執行gulp任務,我們可以下載一款名為“Gulp Tasks ”的外掛。安裝好外掛以後,我們將專案檔案新增到工作區當中,然後開啟gulpfile.js檔案。
在左下角我們可以啟動任務
10、總結:
10.1、安裝nodejs;
10.2、新建package.json檔案;
10.3、全域性和本地依賴安裝gulp;
10.4、安裝gulp外掛;
10.5、新建gulpfile.js檔案;
10.6、通過命令提示符或者開發工具執行gulp任務。
我專案中用到的gulpfile.js檔案內容:
var gulp = require('gulp')
var sass = require('gulp-sass')
var minifycss = require('gulp-minify-css')
var imagemin = require('gulp-imagemin')
var fileinclude = require('gulp-file-include')
gulp.task('imagemin', function () {
gulp.src('./src/image/*.{png,jpg,gif,ico}')
.pipe(imagemin({
optimizationLevel: 5, //型別:Number 預設:3 取值範圍:0-7(優化等級)
// progressive: true, //型別:Boolean 預設:false 無失真壓縮jpg圖片
// interlaced: true, //型別:Boolean 預設:false 隔行掃描gif進行渲染
multipass: true //型別:Boolean 預設:false 多次優化svg直到完全優化
}))
.pipe(gulp.dest('./image'));
})
gulp.task('scss', function () {
gulp.src('./src/scss/**/*.scss')
.pipe(sass())
.pipe(minifycss())
.pipe(gulp.dest('./css'))
})
gulp.task('include', function () {
return gulp.src(
[
'./src/views/*.html'
]
)
//此處是用於給頁面新增頭部和尾部用的
.pipe(fileinclude({
prefix: '@@',
basepath: '@file'
}))
.pipe(gulp.dest('./views'))
})
gulp.task('watchcss', function () {
gulp.watch(['./src/scss/**/*.scss'], ['scss'])
})
gulp.task('watchjs', function () {
gulp.watch(['./src/js/*.js'], ['js'])
})
gulp.task('watchhtml', function () {
gulp.watch(['./src/views/*.html','./src/components/*.html'], ['include'])
})
gulp.task('js', function () {
gulp.src('./src/js/*.js')
.pipe(gulp.dest('./js'))
})
gulp.task('default', function () {
gulp.start(['scss', 'include', 'js', 'watchcss', 'watchjs', 'watchhtml'])
})
注意到:
.pipe(fileinclude({
prefix: '@@',
basepath: '@file'
}))
對應到頁面是這樣的:
@@include('../components/_header.html',{"active":9})
<div class="enterprise-banner">
</div>
<div class="detail inner-container delta" data-bind="if:model.info">
<div class="h60"></div>
<div class="logo tc relative">
<div class="line absolute"></div>
<img class="relative" data-bind="attr:{src:imgPath_js(model.info().companyLogo)}">
</div>
<h2 class="enterprise-tit tc" data-bind="text:model.info().companyName||'企業名稱'"></h2>
<div class="detail-content mt30 ql-editor" data-bind="html:model.info().profile">
</div>
</div>
@@include('../components/_footer.html')
<script src="../js/companyDetail.js"></script>
</body>
</html>
沒錯,就是通過gulp實現靜態頁面新增公共頭部和尾部的(純HTML無法include外部公共頭部和尾部),比較實用哦~