使用gulp實現前端自動化

2021-07-25 06:03:20 字數 3842 閱讀 5834

**

const gulp = require('gulp');

const clean = require('gulp-clean');

const fileinclude = require('gulp-file-include');

const rev = require('gulp-rev');

const revreplace = require('gulp-rev-replace');

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

const cssmin = require('gulp-cssmin');

const spriter = require('gulp-css-spriter');

const plumber = require('gulp-plumber');

const htmlmin = require('gulp-htmlmin');

const sass = require('gulp-sass');

const runsequence = require('run-sequence');

const webpackstream = require('webpack-stream');

const named = require('vinyl-named');

const path = require('path');

const config = ;

const webpackconfig = }],

externals:['$','zepoto']

}};const tempdir = path.resolve(__dirname, 'temp');//臨時目錄

//清理目標資料夾/檔案

gulp.task('clean', function

() ));

});//用於在html檔案中直接include檔案 並儲存到目標路徑

gulp.task('fileinclude', function

() ))

.pipe(gulp.dest(config.view));

});//將拷貝到目標目錄

gulp.task('copy:img', function

() );

//css 壓縮 檔名新增md5

gulp.task('build:css', function

() } */

spritesheet: config.public + '/img/spritesheet' + timestamp + '.png',//img儲存路徑

pathtospritesheetfromcss: '../img/spritesheet' + timestamp + '.png'

//在css檔案中img的路徑

})).pipe(cssmin()) //壓縮

.pipe(gulp.dest(path.join(config.public, 'css')))

.pipe(rev.manifest())

.pipe(gulp.dest(path.join(tempdir, 'rev/css')));

});//js 打包 壓縮 混淆 檔名新增md5

gulp.task('build:js', function

() );

// 將html的css js 引用路徑 替換為 修改(增加md5)後的路徑 並壓縮

gulp.task("revreplace", function

() if (filename.indexof('.scss') > -1)

},modifyreved: (filename) =>

if (filename.indexof('.css') > -1) }};

return gulp.src(config.view + '/*.html')

.pipe(revreplace(revreplaceoptions))

.pipe(htmlmin())

.pipe(gulp.dest(config.view));

});const watchfiles = ['js/**/*.js', 'css/*.css', 'css/*.sass', 'css/**/*.scss', 'html/**/*.html'];

gulp.task('watch', function

() );

});});gulp.task('dev', ['default', 'watch']);

gulp.task('default', function

(done) );

序列方式執行任務,亦即,任務依賴

預設情況下,任務會以最大的併發數同時執行 – 也就是說,它會不做任何等待地將所有的任務同時開起來。如果你希望建立乙個有特定順序的序列的任務鏈,你需要做兩件事:

gulp 的任務執行不能很好的控制順序 使用run-sequence

gulp執行任務出錯時 就會退出程式不再監控 使用gulp-plumber 防止css js 出錯時退出

監控js css html img

任務default是乙個完整的流程 檔案的拷貝 壓縮 打包 等

監控時應根據不同的檔案變更 執行相應任務 這樣效率更佳

但是每個乙個檔案變更導致其它任務也應執行,還是執行完整任務來的簡單且不易出錯 效率不行的話 就換電腦

命令形式 node new

const readline = require('readline');

const fs = require("fs") ;

let pagename = null;

//建立readline介面例項

const rl = readline.createinte***ce();

rl.question("頁面名是什麼?",function

(answer)

.html`))已經存在`);

process.exit(0);

} let basehtml=`

@@include('./common/head.html')

'container'>

@@include('./common/foot.html')

`; fs.writefile(__dirname + `/html/$.html`, basehtml, , function

(err)

else .html`);

}});

fs.writefile(__dirname + `/css/$.scss`, '', , function

(err)

else .scss`);

}});

fs.writefile(__dirname + `/js/$.js`, '', , function

(err)

else .js`);

}});

});

使用gulp-minify-html 後,ejs語法的 「<%=aa %> 」 出錯:<%= aa=」」 %=」「>

換成 gulp-htmlmin

換成 gulp-rev-replace 並且在build任務中將rev(新增md5) 執行步驟放在less(編譯前面);保證了名字還是.less時加入到rev-mainfest.json.

新增配置項

modifyunreved: (filename) =>

if (filename.indexof('.less') > -1)

}, modifyreved: (filename) =>

基於gulp的前端自動化方案

最近幾年前端技術發展日新月異,特別是單頁應用的普及。元件化 工程化 自動化成了前端發展的趨勢。webpack已經成為了前端打包構建的主流,但是一些老古董的專案還是存在的,也有優化的必要,正好公司的老專案需要優化,不多說拿gulp實踐一下。你的專案目錄關係到你的gulp指令碼裡的任務路徑,我指令碼裡寫...

gulp前端自動化構建工具

gulp是基於node.js的乙個構建工具 自動任務執行器 開發者可以使用它自動化工作流程。一些常見的 重複的任務,例如 網頁自動重新整理 css預處理 檢測 壓縮 等,只需要簡單的命令就能全部完成。使用它可以簡化工作,提高開發效率。gulp優點 簡潔 gulp側重 優於配置 最直觀的感受,更為簡單...

基於gulp的前端自動化方案

最近幾年前端技術發展日新月異,特別是單頁應用的普及。元件化 工程化 自動化成了前端發展的趨勢。webpack已經成為了前端打包構建的主流,但是一些老古董的專案還是存在的,也有優化的必要,正好公司的老專案需要優化,不多說拿gulp實踐一下。你的專案目錄關係到你的gulp指令碼裡的任務路徑,我指令碼裡寫...