Gulp構(gòu)建多頁面項目

全局安裝gulp

cpnm install gulp -g

然后本地在安裝一個gulp添加到配置文件

cnpm install gulp --save

然后就是配置一些gulp的插件

const connect = require('gulp-connect');
const htmlmin = require('gulp-htmlmin');  
const uglify = require('gulp-uglify');
const sass = require('gulp-sass');
const babel = require('gulp-babel');
const imagemin = require('gulp-imagemin');
const pngquant = require('imagemin-pngquant');
const cache = require('gulp-cache');
const rename = require('gulp-rename');
const runSequence = require('gulp-sequence');
const del = require('del');

新增然后配置gulpfile.js

//path
let path = {
    //其他資源 path
    staticPath: ['src/build/css/*.*'],
    //html patn
    htmlPath: ['src/**/*.html'],
    //sass path
    sassPath: ['src/build/sass/*.scss'],
    //js path
    jsPath: ['src/build/js/*.js'],
    //images path
    imagesPath: ['src/build/img/*.{png,jpg,gif,ico}'],
    // clear path
    clean: ['./dist/**/*.*']
}


// default 默認(rèn)執(zhí)行任務(wù)
gulp.task('default',cb => {
    runSequence(
        'clean', // 第一步:清理目標(biāo)目錄
        'dest', // 第二步:打包
        'watch', // 第三步:監(jiān)控
        cb
    );
});


//Clean target
gulp.task('clean', function(){
    del(path.clean).then(function(){
        console.log('Deleted files and folders:\n' + JSON.stringify(path));
    });
});

//拷貝靜態(tài)資源文件
gulp.task('file',() => {
    //獲取文件
    gulp.src(path.staticPath)
        //讓文件流走向下個環(huán)節(jié)
        .pipe(gulp.dest('dist/build'))
})
//當(dāng)文件修改時自動同步
gulp.task('watchFile',() => {gulp.watch(path.staticPath,['file']);})

//壓縮同步html
gulp.task('html',() => {
    gulp.src(path.htmlPath)
        //html壓縮
        .pipe(htmlmin({
            removeComments: true,//清除HTML注釋
            collapseWhitespace: true,//壓縮HTML
            removeEmptyAttributes: true,//刪除所有空格作屬性值 <input id="" /> ==> <input />
            removeScriptTypeAttributes: true,//刪除<script>的type="text/javascript"
            removeStyleLinkTypeAttributes: true,//刪除<style>和<link>的type="text/css"
            minifyJS: true,//壓縮頁面JS
            minifyCSS: true//壓縮頁面CSS
        }))
        .pipe(gulp.dest('dist/'));
});
//當(dāng)html修改時自動同步
gulp.task('watchHtml',() => {gulp.watch(path.htmlPath,['html']);});


//讓sass轉(zhuǎn)換為css
gulp.task('sass',() => {
    gulp.src(path.sassPath)
    //scss轉(zhuǎn)換成css租悄,并設(shè)置css轉(zhuǎn)換格式
        .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
        .pipe(rename({ extname: '.min.css' }))
        .pipe(gulp.dest('src/build/css'));
});
//當(dāng)scss文件修改時自動轉(zhuǎn)譯同步
gulp.task('watchSass',() => {gulp.watch(path.sassPath,['sass']);});

//轉(zhuǎn)譯壓縮js
gulp.task('babel',() => {
    gulp.src(path.jsPath)
        //jsEs5轉(zhuǎn)譯
        .pipe(babel({
            presets: ['env']
        }))
        //js壓縮
        .pipe(uglify())
        .pipe(rename({ extname: '.min.js' }))
        .pipe(gulp.dest('dist/build/js'));
});
//當(dāng)js文件被修改的時候自動轉(zhuǎn)譯同步
gulp.task('watchBabel',() => {gulp.watch(path.jsPath,['babel']);});


//圖片壓縮
gulp.task('imagemin', function () {
    gulp.src(path.imagesPath)
        .pipe(cache(imagemin({
            interlaced: true,
            progressive: true, //類型:Boolean 默認(rèn):false 無損壓縮jpg圖片
            svgoPlugins: [{removeViewBox: false}], //不要移除svg的viewbox屬性
            use: [pngquant({optimizationLevel: 4})] //使用pngquant深度壓縮png圖片的imagemin插件
        })))
        .pipe(gulp.dest('dist/build/img'));
});
//當(dāng)圖片修改的時候自動壓縮同步
gulp.task('watchImagemin',() => {gulp.watch(path.imagesPath,['imagemin']);});


// 打包構(gòu)建所有的文件
gulp.task('dest',cb => {runSequence(['file','html','sass','babel','imagemin'],cb)});
// 自動轉(zhuǎn)譯同步所有的文件
gulp.task('watch',cb => {runSequence(['watchFile','watchHtml','watchSass','watchBabel','watchImagemin'],'connect','watchRehtml',cb)});


//設(shè)置本地服務(wù)
gulp.task('connect',() => {
    connect.server({
        root: 'src',
        host: '192.168.2.15',
        livereload: true,
        port: 8888
    });
});
//跟新本地文件同步到瀏覽器
gulp.task('rehtml',() => {
    gulp.src('src/**/*.*')
        .pipe(connect.reload());
});
//本地跟新文件自動同步到瀏覽器
gulp.task('watchRehtml',() => {gulp.watch(['src/**/*.*'], ['rehtml']);});

babel需要添加個.babelrc

{
  "presets": ["env"]
}

然后就可以使用gulp + 任務(wù)名執(zhí)行任務(wù)了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末对湃,一起剝皮案震驚了整個濱河市础淤,隨后出現(xiàn)的幾起案子饥追,更是在濱河造成了極大的恐慌紫新,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件担平,死亡現(xiàn)場離奇詭異示绊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)暂论,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門面褐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人取胎,你說我怎么就攤上這事展哭。” “怎么了闻蛀?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵匪傍,是天一觀的道長。 經(jīng)常有香客問我循榆,道長析恢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任秧饮,我火速辦了婚禮映挂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盗尸。我一直安慰自己柑船,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布泼各。 她就那樣靜靜地躺著鞍时,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扣蜻。 梳的紋絲不亂的頭發(fā)上逆巍,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機(jī)與錄音莽使,去河邊找鬼锐极。 笑死,一個胖子當(dāng)著我的面吹牛芳肌,可吹牛的內(nèi)容都是我干的灵再。 我是一名探鬼主播肋层,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翎迁!你這毒婦竟也來了栋猖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汪榔,失蹤者是張志新(化名)和其女友劉穎蒲拉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揍异,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡全陨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了衷掷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡柿菩,死狀恐怖戚嗅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枢舶,我是刑警寧澤懦胞,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凉泄,受9級特大地震影響躏尉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜后众,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一胀糜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒂誉,春花似錦教藻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绍移,卻和暖如春悄窃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹂窖。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工轧抗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恼策。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓鸦致,卻偏偏與公主長得像潮剪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子分唾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

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

  • gulpjs是一個前端構(gòu)建工具抗碰,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù)绽乔,API也非常簡單弧蝇,學(xué)...
    依依玖玥閱讀 3,154評論 7 55
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比折砸,gulpjs無需寫一大堆繁雜的配置參數(shù)看疗,API也非常簡單,學(xué)...
    井皮皮閱讀 1,297評論 0 10
  • gulpjs是一個前端構(gòu)建工具睦授,與gruntjs相比两芳,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單去枷,學(xué)...
    MC丶逗逼嘿閱讀 675評論 0 3
  • gulpjs是一個前端構(gòu)建工具怖辆,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù)删顶,API也非常簡單竖螃,學(xué)...
    小裁縫sun閱讀 928評論 0 3
  • 1、gulp的安裝 首先確保你已經(jīng)正確安裝了nodejs環(huán)境逗余。然后以全局方式安裝gulp: npm install...
    F_imok閱讀 2,378評論 1 11