導航:首頁 > 文件處理 > gulp壓縮html實例

gulp壓縮html實例

發布時間:2023-09-01 20:26:51

1. 前端構建工具Gulp.js 你知多少..(webpack/gulp/grunt)

@ TOC

閱讀本文章之前,相信你已經對前端構建工具(webpack、gulp、grunt)有一定的認知和了解了,那麼他們之間究竟有什麼區別呢?

gulp文檔上面有這么一句話 ,也就是說 gulp是一個自動化構建工具;
gulp的一些功能如下(包括但不限於):

其實Webpack和另外兩個並沒有太多的可比性

傻瓜式起步照搬官網文檔
1.安裝

2.在項目根目錄下創建一個名為 gulpfile.js 的文件:

3.運行 gulp:

默認的名為 default 的任務(task)將會被運行,在這里,這個任務並未做任何事情。
具體詳情可以查看 gulpjs.com文檔

新建一個項目gulp-test
環境:

1.新建文件以下文件如下

其中 gulpfile.js 是我們gulp的配置文件,啟動gulp默認會找個這個文件並執行;
2.接下來安裝依賴

一直按回車Enter初始化package.json文件(小技巧: npm iniy -y 可以免去繁瑣的enter步驟)
此時我們的目錄結構是這樣了

安裝依賴

這里頁面實時刷新只講這個 gulp-connect ,其他詳情可以參照 Browsersync 和文章 gulp-livereload

安裝完依賴後配置gulpfile.js如下:

大概講解一下gulpfile.js:

gulp.task 是gulp的api 定義一個使用 Orchestrator 實現的任務(task)
如上我們定義了 my-task-js my-task-css html clean default watch server 等任務,其中:

my-task-js 是將 符合所提供的匹配模式的js 進行檢測(gulp-jshint)、壓縮(gulp-uglify)、合並(gulp-concat)、重命名(gulp-rename)、輸出(gulp.dest)到/dist/js目錄下;

my-task-css 是將 符合所提供的匹配模式的sass進行編譯(gulp-sass)、壓縮(gulp-uglify)、合並(gulp-concat)、重命名(gulp-rename)、輸出(gulp.dest)到/dist/css目錄下;

html 是將 符合所提供的匹配模式的html進行監聽,如果有變化則connect.reload()

clean 是如果任務重新啟動時 刪除舊文件;

default gulp默認啟動的任務

watch gulp的api 監視文件,並且可以在文件發生改動時候做一些事情。它總會返回一個 EventEmitter 來發射(emit) change 事件。

server 依賴gulp-connect啟動一個伺服器

配置完gulpfile.js之後,我們給js和css及html加點東西:

首先js/helloworld.js

css/index.scss

index.html

運行gulp

瀏覽器效果:

接下來我們修改helloworld.js來看看是否能實時刷新
修改如下:

按保存之後,終端給我們報了一個錯:

查看js發現我們用了es6語法的聲明語句 但當前gulp無法處理es6語法,有問題解決問題,es6=>es5

解決方案:
安裝gulp-babel babel-core babel-preset-es2015

gulpfile.js修改如下:

運行

依然報上面的錯;找了一些原因發現,雖然安裝了相關依賴,卻沒有配置.babelrc文件,即babel還沒轉化es6

根目錄添加.babelrc文件

重新運行:

查看dist下的js文件

改變helloworld.js檢查頁面是否刷新

保存,頁面的天空藍換成你們喜歡的yellow顏色

修改index.scss 查看是否會刷新頁面

最後修改index.html 查看是否會刷新頁面

今天主要學習了gulp的簡單項目搭建及實時更新配置;其實gulp類似於grunt的弱化版,但更簡單好用,只是插件會少一些,目前主流的項目搭建工具主要是webpack,但依然有不少項目還用著gulp或者grunt

擴展:

下面還有一些樓主的學習筆記:

有興趣的可以多多交流@ 樓主博客

2. gulp壓縮合並css/js時,怎麼自動修改引用壓縮後的css/js的路徑

記錄一下用 gulp 來合並、壓縮CSS以及進行 MD5命名以及替換文件中引入的CSS文件,當然這一系列操作都是用基於gulp插件的,主要會用到下面的幾個插件:
var concat = require('gulp-concat');//- 多個文件合並為一個;var minifyCss = require('gulp-minify-css');//- 壓縮CSS為一行; var rev = require('gulp-rev');//- 對文件名加MD5後綴var revCollector = require('gulp-rev-collector');//- 路徑替換

安裝Gulp插件到本地項目
npm init//- 生成一個 package.json,裡面是一些常規的配置信息npm install gulp gulp-concat gulp-minify-css gulp-rev gulp-rev-collector --save-dev//- 安裝插件到項目目錄內

完成上面兩步後,會在我們的項目內生成一個package.json文件以及一個node_moles目錄
創建配置文件 gulpfile.js
在項目根目錄內創建一個 gulpfile.js 文件(必須是這個文件名喲~),內容就是上面幾個插件的配置信息:
var gulp = require('gulp');var concat = require('gulp-concat'); //- 多個文件合並為一個;var minifyCss = require('gulp-minify-css'); //- 壓縮CSS為一行;var rev = require('gulp-rev'); //- 對文件名加MD5後綴var revCollector = require('gulp-rev-collector'); //- 路徑替換gulp.task('concat', function() { //- 創建一個名為 concat 的 task
gulp.src(['./css/wap_v3.1.css', './css/wap_v3.1.3.css']) //- 需要處理的css文件,放到一個字元串數組里
.pipe(concat('wap.min.css')) //- 合並後的文件名
.pipe(minifyCss()) //- 壓縮處理成一行
.pipe(rev()) //- 文件名加MD5後綴
.pipe(gulp.dest('./css')) //- 輸出文件本地
.pipe(rev.manifest()) //- 生成一個rev-manifest.json
.pipe(gulp.dest('./rev')); //- 將 rev-manifest.json 保存到 rev 目錄內});

gulp.task('rev', function() {
gulp.src(['./rev/*.json', './application/**/header.php']) //- 讀取 rev-manifest.json 文件以及需要進行css名替換的文件
.pipe(revCollector()) //- 執行文件內css名的替換
.pipe(gulp.dest('./application/')); //- 替換後的文件輸出的目錄});

gulp.task('default', ['concat', 'rev']);

運行結果
通過以上的配置之後,就可以開始運行 gulp 對我們的項目進行相關的操作啦;
使用 gulp 命令,運行Gulp.js 構建程序
首先運行 concat 這個 task 生成一個 rev-manifest.json 文件
然後再運行 rev 這個 task 替換掉文件中引入的 css
YuanWingdeMacBook-Pro:m YuanWing$ gulp concat
[11:47:02] Using gulpfile ~/SVN/JKD/m/gulpfile.js
[11:47:03] Starting 'concat'...
[11:47:03] Finished 'concat' after 12 msYuanWingdeMacBook-Pro:m YuanWing$ gulp rev
[11:47:17] Using gulpfile ~/SVN/JKD/m/gulpfile.js
[11:47:17] Starting 'rev'...
[11:47:17] Finished 'rev' after 10 msYuanWingdeMacBook-Pro:m YuanWing$

rev-manifest.json文件內容:
{ "wap.min.css": "wap.min-c49f62a273.css"}

header.php替換前後對比:
替換前:<link rel="stylesheet" href="/css/wap.min.css" />
替換後:<link rel="stylesheet" href="/css/wap.min-c49f62a273.css" />
gulp-rev-collector進行文件路徑替換是依據 rev-manifest.json 的,所以要先成生 .json 文件,然後再進行替換;

3. gulp怎麼替換html中的資源路徑.並把html輸出到指定目錄

創建一個空文件夾名字任意,此項目為angular-gulp-seed

mkdir angular-gulp-seed

初始化工程

npm init

創建項目基本目錄結構如下:

+src
+app // 業務模塊
-app.js // 應用入口
+demo // 業務模塊目錄,所有子模塊均遵循此目錄
- mole.js // 模塊聲明文件
- controller.js // vm層
- index.html // 主入口模板
- router.js // 模塊路由文件
- style.css // 模塊樣式
+home
+assets // 靜態資源目錄
-images
-css
+common // 公共服務
+components // 公共組件
+scripts // gulp腳本
- gulp.build.js // build任務
- gulp.common.js // dev,build公共任務
- gulp.config.js // 基礎配置
- gulp.dev.js // dev任務
index.html // 主頁面package.json

正式開始coding

gulp配置部分

1.安裝gulp
npm install gulp -D
2.新建gulpfile文件,安裝browser-sync包,配置第一個任務
var browserSync = require('browser-sync');
gulp.task('browserSync', function () {
browserSync({ server: { baseDir: './', index: 'src/index.html'
}
});
});
gulp.task('default', ['browserSync']);// 執行gulp命令,瀏覽器啟動,可以看到大致頁面結構

3.為了動態插入新加的js和css文件,且添加的文件有一定順序,安裝gulp系列包。
npm install gulp-watch gulp-inject gulp-order -D
4. 新建一個gulp.config.js文件,配置一些基本文件路徑和順序
mole.exports = function () { var src = './src/'; var build = './dist/'; var config = { src: src, build: build, index: src + 'index.html', css: [src + '**/*.css'], appJs: [src + 'app/**/*.js'], commonJs: [src + 'common/**/*.js'], componentJs: [src + 'components/**/*.js'], jsOrder: [ '**/app.js', // 項目主入口
'**/app.*.js', // 主入口相應配置
'**/mole.js', // 模塊聲明
'**/router.js', // 模塊路由
'**/index.js', // 組件、resource入口
'**/*.js' // 其他
], cssOrder: [ '**/app.css', // 項目主模塊
'**/*.mole.css', // 業務子模塊
'**/*.css' // 其他
]
} return config;
}();
5.使用gulp-inject動態插入css和js

閱讀全文

與gulp壓縮html實例相關的資料

熱點內容
裘錫圭pdf 瀏覽:726
android模擬器調試 瀏覽:135
sap命令大全 瀏覽:296
mysql導出數據命令 瀏覽:954
文件夾隱藏了出不來 瀏覽:562
電信網上大學源碼 瀏覽:204
rr輪轉調度演算法 瀏覽:253
我的世界無法登入伺服器怎麼辦 瀏覽:148
文件加密授權特定隱藏訪問控制 瀏覽:801
程序員劍靈官網 瀏覽:516
php調用static方法 瀏覽:934
天正命令版 瀏覽:87
聚合支付加密幣 瀏覽:313
蜜源app是什麼時候創立的 瀏覽:707
計算機專業學51單片機 瀏覽:212
程序員不接受反駁 瀏覽:299
微軟自帶的壓縮軟體 瀏覽:290
中國玩家在日本伺服器做什麼 瀏覽:52
12864和單片機 瀏覽:899
25匹空調壓縮機 瀏覽:650