gulp配置實現修改js、css、html自動刷新

寫在前面:

本配置支持es6、less、react

1.首先

給出初始的目錄結構

給出執行gulp后的目錄結構

給出執行gulp --p后的目錄結構

2.package.json里是一個寫入。文件描述了npm包的相關配置信息(作者、簡介、包依賴等)和所需模塊。

{"name": "gruntTest", "version": "1.0.0","description": "","main": "Gulpfile.js"
}

3.Gulpfile.js添加要執行的任務

var gulp = require('gulp');
var uglify = require('gulp-uglify');  //js壓縮
var concat = require('gulp-concat');  //合并文件
var minifyCSS = require('gulp-minify-css');  //css壓縮
var less = require('gulp-less');  //less
var changedInPlace = require('gulp-changed-in-place');//不管修改哪個文件,gulp會簡化DEST里的html文件
var minifyHTML = require('gulp-htmlmin');  //簡化html
var browserSync = require('browser-sync').create(); //自動刷新
var babel = require('gulp-babel'); //支持es6
var argv = require('yargs').argv; //支持不同環境
var sequence = require('gulp-sequence'); //按照順序執行
var watch = require('watch');  //監聽
var clean = require('gulp-clean');  //監聽
//npm install --save-dev gulp-babel babel-preset-es2015
var DEST = 'dest/';
var HTML_PATH = './src/*.html';gulp.task('minify-js', function(){if(argv.p){gulp.src('src/source/*.js').pipe(babel({presets: ['es2015','react']})).pipe(uglify()).pipe(concat('gruntTest.min.js')).pipe(gulp.dest(DEST+'js'))}else{gulp.src('src/source/*.js').pipe(babel({presets: ['es2015','react']})).pipe(uglify()).pipe(concat('gruntTest.min.js')).pipe(gulp.dest('src/js'))		}		
});
gulp.task('minify-css', function(){if(argv.p){gulp.src('src/less/*.less')  //或者用['src/less/p1.less','src/less/p2.less'].pipe(less()).pipe(minifyCSS()).pipe(concat('style.min.css')).pipe(gulp.dest(DEST+'css')).pipe(browserSync.stream());	}else{gulp.src('src/less/*.less')  //或者用['src/less/p1.less','src/less/p2.less'].pipe(less()).pipe(minifyCSS()).pipe(concat('style.min.css')).pipe(gulp.dest('src/css')).pipe(browserSync.stream());}
});
gulp.task('minify-html', function(){gulp.src(HTML_PATH).pipe(changedInPlace({firstPass: true})).pipe(minifyHTML({collapseWhitespace: true})).pipe(gulp.dest(DEST)).pipe(browserSync.stream());
});
gulp.task('clean', function () {gulp.src(['./src/css/*.css','./src/js/*.js'], {read: false}).pipe(clean());
});
var files = ['./src/css/*.css','./src/js/*.js'
];
gulp.task('browser-sync', function(){browserSync.init(files,{server: {baseDir: './'},port: 9999});
});
gulp.task('watch', function() {gulp.watch('./src/source/*.js',['minify-js']);gulp.watch('./src/less/*.less',['minify-css']);	
});
if(argv.p){//productgulp.task('default', sequence('minify-js','minify-css','minify-html','browser-sync'));
}else{//developgulp.task('default', sequence('clean','minify-js','minify-css','watch','browser-sync'));
}

4.擴展

(1)上面一堆require看著好煩人,也很龐大。此處可以引入“gulp-load-plugins”插件

var gulpLoadPlugins = require('gulp-load-plugins'),plugins = gulpLoadPlugins();plugins.uglify();即可執行相應任務

(2)若某個文件夾下好多文件,那么watch監聽時需要一一列舉,可以目錄寫成json格式(例如src.source.*.js)。通過引入“fs”插件,用fs.freaddirSync()方法去讀路徑。循環即可,此處的實現純屬寫js代碼。

?

  

  

轉載于:https://www.cnblogs.com/lixuemin/p/5611690.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256934.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256934.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256934.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

作為程序員之正則表達式

目錄 正則表達式基礎語法標準字符集合自定義的字符集合多行、單行模式高級語法選擇符和分組反向引用預搜索/零寬斷言例子匹配郵箱正則表達式 基礎語法 標準字符集合 \D 和[^\d]意思一樣,就是與 \d 相反 REG意義\ddigital表示 0 到 9 之間任意的一個數字\wworld表示任…

javascript 的dateObj.getTime() 在為C#的獲取方式

publicstringGetTime() { Int64 retval 0; DateTime st newDateTime(1970, 1, 1); TimeSpan t (DateTime.Now.ToUniversalTime() -st); retval (Int64)(t.TotalMilliseconds 0.5); returnretval.ToString(); } 在Net中的實際測試代碼 MSScriptControl.Scri…

學習筆記(34):Python網絡編程并發編程-異步調用與回調機制

立即學習:https://edu.csdn.net/course/play/24458/296452?utm_sourceblogtoedu 1.知識點:(詳細見代碼注釋) 1)同步調用: res1 pool.submit(ju,john1).result() 2)異步調用 pool.submit(ju,john1) 3…

c和c++的結構體使用

一:結構體其實有兩種初始化方式 1、直接把多有的變量在其內部通過形參傳入到結構體中,結構體定義在程序的最開頭是個全局變量;這個時候參數已經傳入進來,在本文件中都可以直接使用該結構體的所有成員變量 2、先定義,…

python第三方庫安裝的各種方法(全網最全,最簡單易懂)

使用鏡像: pip install virtualenv -i https://pypi.douban.com/simple 國內源: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple module_name 或 pip install -i https://pypi.douban.com/simple module_name 國內的鏡像源來加速 pip inst…

Jmeter服務器監控插件使用

Jmeter服務器監控插件使用 Jmeter-Plugins支持CPU、Memory、Swap、Disk和Network的監控,在測試過程中更加方便進行結果收集和統計分析。 一、準備工作: 1、下載Jmeter-Plugins插件,下載Server端ServerAgent插件; 2、解壓Jmeter-Pl…

以后遇見 visual studio的調試bug出錯,直接查詢錯誤代碼;高效解決調試問題

1、例如遇到&#xff1a; 嚴重性 代碼 說明 項目 文件 行 錯誤 LNK2005 "void __cdecl readFileList(class std::basic_string<char,struct std::char_traits<char>, class std::allocator<char> >,class std::vector<class s…

數據庫導入導出命令

Oracle數據導入導出imp/exp 功能&#xff1a;Oracle數據導入導出imp/exp就相當與oracle數據還原與備份。 大多情況都可以用Oracle數據導入導出完成數據的備份和還原&#xff08;不會造成數據的丟失&#xff09;。 Oracle有個好處&#xff0c;雖然你的電腦不是服務器&#xff0c…

CCNA系列課程(4)交換技術

第四節課 交換技術杜飛2009-06-28咱們今天來看一下局域網交換技術&#xff0c;也稱為層2交換技術&#xff0c;內容主要包括層2交換的工作原理、網絡環路、如何利用Spanning-Tree Protocol 來解決網絡環路、VLAN及VTP技術&#xff0c;閑話少說&#xff0c;書歸正傳。我們在…

python中yield的用法詳解——最簡單,最清晰的解釋(轉載)

首先&#xff0c;如果你還沒有對yield有個初步分認識&#xff0c;那么你先把yield看做“return”&#xff0c;這個是直觀的&#xff0c;它首先是個return&#xff0c;普通的return是什么意思&#xff0c;就是在程序中返回某個值&#xff0c;返回之后程序就不再往下運行了。看做…

extern 全局變量在不同的文件使用方法(static)

例如&#xff1a;1.c int k6&#xff1b; 想要在2.c中調用1.c的k 則在2.c中用extern k 聲明一下就可以使用了&#xff1b; int c3; ck; 但是如果1.c中是這樣定義的 static int k6; 想要在2.c中使用k時不允許的&#xff0c;static只能在本文件中使用&#xff0c;外部文件…

python學習之路基礎篇(第八篇)

一、作業&#xff08;對象的封裝&#xff09;     要點分析 1.封裝&#xff0c;對象中嵌套對象 2.pickle,load,切記&#xff0c;一定要先導入相關的類二、上節內容回顧和補充      面向對象基本知識&#xff1a; 1.類和對象的…

Ubuntu實現樹莓派交叉編譯

一、交叉編譯 在一個平臺上生成另一個平臺上的可執行代碼。為什么要大費周折的進行交叉編譯呢&#xff1f;一句話&#xff1a;不得已而為之。有時是因為目的平臺上不允許或不能夠安裝所需要的編譯器&#xff0c;而又需要這個編譯器的某些特征&#xff1b;有時是因為目的平臺上的…

python常用的第三方庫總結

通用 urllib -網絡庫(stdlib)。requests -網絡庫。grab – 網絡庫&#xff08;基于pycurl&#xff09;。pycurl – 網絡庫&#xff08;綁定libcurl&#xff09;。urllib3 – Python HTTP庫&#xff0c;安全連接池、支持文件post、可用性高。httplib2 – 網絡庫。RoboBrowser –…

ubuntu系統安裝vscode教程

方法一&#xff1a; 依次輸入如下命令 1、sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make 2、sudo apt-get update 3、sudo apt-get install ubuntu-make 4、umake ide visual-studio-code 提示輸入a即可 方法二&#xff1a; 在windows系統下載安裝包&#xff0c…

pydebugger

定義結構體from ctypes import *WORD c_ushort DWORD c_ulong LPBYTE POINTER(c_ubyte) LPTSTR POINTER(c_char) HANDLE c_void_pDEBUG_PROCESS 0x00000001 CREATE_NEW_CONSOLE 0x00000010class STARTUPINFO(Structure):_fields_ [("cb", DWORD),("lpR…

Vue2 源碼漫游(一)

Vue2 源碼漫游&#xff08;一&#xff09; 描述&#xff1a; Vue框架中的基本原理可能大家都基本了解了&#xff0c;但是還沒有漫游一下源碼。 所以&#xff0c;覺得還是有必要跑一下。 由于是代碼漫游&#xff0c;所以大部分為關鍵性代碼&#xff0c;以主線路和主要分支的代碼…

神經網絡中的反向傳播算法

神經網絡中的方向傳播算法講得復雜難懂。簡單地說明它的原理&#xff1a; 神經網絡&#xff1a;輸入層&#xff0c;隱藏層&#xff0c;輸出層。根據線性關系&#xff0c;激活函數&#xff0c;并最終根據監督學習寫出誤差表達式。此時&#xff0c;誤差函數可寫成&#xff0c;那么…

有限元筆記02:第三章

1.局部坐標到全局坐標變換 2.

bug__android studio 出現布局文件不提示,且點擊代碼不能跟蹤代碼

1&#xff0c;點擊布局文件&#xff0c;出現 Cannot find declaration to go to ? 且 點擊代碼不能跟蹤代碼&#xff1f; 把 項目的build.gradle 中的 compileSdkVersion 23 版本設置最高。 apply plugin: com.android.applicationandroid { compileSdkVersion 23 b…