說明:gulp是基於nodejs,理所固然須要安裝nodejs;javascript
安裝:打開nodejs官網(https://nodejs.org/en/),點擊碩大的綠色Download按鈕,它會根據系統信息選擇對應版本(windows系統下載.msi文件)。css
測試:按window + r 輸入cmd回車,而後輸入node -vhtml
而後輸入npm -v 前端
若是都能打印出相應版本信息,那麼說明你配置成功了java
成功安裝顯示以下:node
由於npm安裝插件是從國外服務器下載,受網絡影響大,可能出現異常,若是npm的服務器在中國就行了,因此咱們樂於分享的淘寶團隊幹了這事。npm
淘寶npm鏡像網址:http://npm.taobao.org json
安裝:使用命令執行gulp
npm install cnpm -g --registry=https://registry.npm.taobao.org windows
tips:
安裝完成以下:
命令 :
(須要項目名稱、版本號、描述、入口文件、運行命令、做者、證書 ---- 一路按回車便可)
//獲得的 package.json 以下 { "name": "gulp", 項目名稱(必須) "version": "1.0.0", 項目版本(必須) "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
命令 : cnpm i gulp@3 -g
全局安裝gulp
@3 表明選擇了 3 的版本
i 即爲 install
-g 即爲 --global
測試是否安裝成功:gulp -v
命令: cnpm i gulp@3 -D cnpm i gulp@3 -S (兩者選擇其一便可)
-D 縮寫 --save-dev 開發依賴
-S 縮寫 --save 項目依賴
開發依賴: 開發過程當中須要使用到的依賴的模塊,項目上線時不須要的模塊 --- 代碼格式校驗的模塊
項目依賴: 項目上線仍然須要使用的模塊
----- 若是不知道怎麼選擇,那你就寫 -S
成功安裝以下:
const gulp = require('gulp');
//+++ // 複製index.html 到 dist 目錄 gulp.task('copy-index', function () { gulp.src('./index.html') .pipe(gulp.dest('dist')) })
命令行執行了 gulp copy-index 發現多了 dist目錄,且目錄下有一份同樣的index文件
拿到css文件夾下全部文件
gulp.src('./css/**/*')
拷貝css文件夾下的全部文件以及文件夾內的文件
//+++ gulp.task('copy-css', function () { gulp.src('./css/**/*') .pipe(gulp.dest('dist/css')) //全部文件拷貝到dist文件加內 })
指令:gulp copy-css
安裝合併模塊
指令:cnpm i gulp-concat -S
合併代碼以下:
//++++ const concat = require('gulp-concat'); //引入合併模塊 gulp.task('copy-css', function () { gulp.src('./css/**/*') // 拿到全部的css // ++++ .pipe(concat('main.css')) // 合併 .pipe(gulp.dest('dist/css')) })
安裝壓縮模塊
指令:cnpm i gulp-minify-css -S
// ++++ const minifyCss = require('gulp-minify-css'); //引入壓縮模塊 gulp.task('copy-css', function () { gulp.src('./css/**/*') // 拿到全部的css .pipe(concat('main.css')) // 合併 // ++++ .pipe(minifyCss()) // 壓縮 .pipe(gulp.dest('dist/css')) })
安裝重命名模塊
cnpm i gulp-rename -S
重命名
合併代碼放到dist/css
壓縮css 重命名 再放到dist/css
//+++ const rename = require('gulp-rename'); //引入重命名模塊 gulp.task('copy-css', function () { gulp.src('./css/**/*') // 拿到全部的css .pipe(concat('main.css')) // 合併 //+++ .pipe(gulp.dest('dist/css')) .pipe(minifyCss()) // 壓縮 //+++ .pipe(rename('main.min.css')) //重命名爲main.min.css .pipe(gulp.dest('dist/css')) })
本質也是文件的合併,操做方法一致
gulp.task('copy-js', () => { gulp.src('./js/**/*') .pipe(gulp.dest('dist/js')) })
本質也是文件的複製,操做方法一致
gulp.task('copy-js', () => { gulp.src('./js/**/*') // +++ .pipe(concat('main.js')) .pipe(gulp.dest('dist/js')) })
須要下載壓縮js模塊
指令: cnpm i gulp-uglify -S
//引用壓縮js模塊 const uglify = require('gulp-uglify'); gulp.task('copy-js', () => { gulp.src('./js/**/*') .pipe(concat('main.js')) // 合併js // +++ .pipe(uglify()) // 壓縮js .pipe(gulp.dest('dist/js')) })
gulp.task('copy-js', () => { gulp.src('./js/**/*') .pipe(concat('main.js')) // 合併js // +++ .pipe(gulp.dest('dist/js')) .pipe(uglify()) // 壓縮js // +++ .pipe(rename('main.min.js')) .pipe(gulp.dest('dist/js')) })
//+++ gulp.task('copy-images', () => { gulp.src('./assets/**/*') .pipe(gulp.dest('dist/assets')) })
須要下載壓縮圖片模塊
指令:cnpm i gulp-imagemin -S
//引入壓縮圖片模塊 const imagemin = require('gulp-imagemin'); gulp.task('copy-images', () => { gulp.src('./assets/**/*') // +++ .pipe(imagemin()) // 壓縮圖片 .pipe(gulp.dest('dist/assets')) })
沒有後端接口時,本身的模擬數據
數據的複製 ,與文件的複製同樣
// +++ gulp.task('copy-data', () => { gulp.src('./data/**/*') .pipe(gulp.dest('dist/data')) })
任務的名稱不要本身隨意定義,就寫build
// +++ gulp.task('build', ['copy-index', 'copy-css', 'copy-js', 'copy-images', 'copy-data'], () => { console.log('success') })
下載服務器模塊
指令:cnpm i gulp-connect -S
tip: server 任務名不能更改
//+++ gulp.task('server', () => { connect.server({ // 說明服務器的根目錄 root: 'dist', livereload: true // 實時更新 }) })
任務監聽,能夠監放任務的改動
// +++ gulp.task('watch', () => { gulp.watch('index.html', ['copy-index']) gulp.watch('css/**/*', ['copy-css']) gulp.watch('js/**/*', ['copy-js']) gulp.watch('assets/**/*', ['copy-images']) gulp.watch('data/**/*', ['copy-data']) })
gulp.task('default', ['server', 'watch'])
gulp
在頁面、css、js、圖片、數據相關任務最後執行一句話,從新啓動服務器
實現更改文件後,頁面實時更新
gulp.task('copy-data', () => { gulp.src('./data/**/*') .pipe(gulp.dest('dist/data')) .pipe(connect.reload()) //********************************************* })