更多gulp經常使用插件使用請訪問:gulp經常使用插件彙總javascript
gulp-useref這是一款能夠將HTML引用的多個CSS和JS合併起來,減少依賴的文件個數,從而減小瀏覽器發起的請求次數。gulp-useref根據註釋將HTML中須要合併壓縮的區塊找出來,對區塊內的全部文件進行合併。注意:它只負責合併,不負責壓縮!,若是須要作其餘操做,能夠配合gulp-if
插件使用.css
更多使用文檔請點擊訪問gulp-useref工具官網。html
一鍵安裝很少解釋java
npm install --save-dev gulp-useref
如下示例將解析HTML中的構建塊,將其替換並傳遞這些文件。構建塊內的資產也將被串聯並經過流傳遞。typescript
var gulp = require('gulp'), useref = require('gulp-useref'); gulp.task('default', function () { return gulp.src('app/*.html') .pipe(useref()) .pipe(gulp.dest('dist')); });
帶有選項的使用:npm
var gulp = require('gulp'), useref = require('gulp-useref'); gulp.task('default', function () { return gulp.src('app/*.html') .pipe(useref({ searchPath: '.tmp' })) .pipe(gulp.dest('dist')); });
若是要壓縮或執行其餘一些修改,則可使用 gulp-if
有條件地處理特定類型的資產。gulp
var gulp = require('gulp'), useref = require('gulp-useref'), gulpif = require('gulp-if'), uglify = require('gulp-uglify'), minifyCss = require('gulp-clean-css'); gulp.task('html', function () { return gulp.src('app/*.html') .pipe(useref()) .pipe(gulpif('*.js', uglify())) .pipe(gulpif('*.css', minifyCss())) .pipe(gulp.dest('dist')); });
上面是在 gulpfile.js
中的調用代碼,可是還須要在HTML寫一些代碼配合使用,下面咱們就來看看在html中須要怎麼配合使用。api
<!-- build:<type>(alternate search path) <path> <parameters> --> ... HTML Markup, list of script / link tags. <!-- endbuild -->
type
(鍵入): 能夠是js
,css
或remove
; remove
將徹底刪除構建塊,而不會生成文件alternate search path
(替代搜索路徑):(可選)默認狀況下,輸入文件是相對於已處理文件的。替代搜索路徑容許更改此路徑。該路徑還能夠包含使用JSON大括號數組表示法(例如)從右到左處理的一系列路徑<!-- build:js({path1,path2}) js/lib.js -->
。path
: 優化文件的文件路徑,目標輸出parameters
(參數): 應該添加到標籤中的其餘參數完整形式的示例以下所示:數組
<html> <head> <!-- build:css css/combined.css --> <link href="css/one.css" rel="stylesheet"> <link href="css/two.css" rel="stylesheet"> <!-- endbuild --> </head> <body> <!-- build:js scripts/combined.js --> <script type="text/javascript" src="scripts/one.js"></script> <script type="text/javascript" src="scripts/two.js"></script> <!-- endbuild --> </body> </html>
生成的HTML將是:瀏覽器
<html> <head> <link rel="stylesheet" href="css/combined.css"/> </head> <body> <script src="scripts/combined.js"></script> </body> </html>
useref(options [,transformStream1 [,transformStream2 [,...]]])
返回一個流,其中包含資產替換後的結果HTML文件以及來自HTML內部構建塊的串聯資產文件。支持 useref
的全部選項。
Transform Streams(轉換流)
類型:Stream
默認值:none
在合併以前轉換資產。例如,要集成源地圖:
var gulp = require('gulp'), sourcemaps = require('gulp-sourcemaps'), useref = require('gulp-useref'), lazypipe = require('lazypipe'); gulp.task('default', function () { return gulp.src('index.html') .pipe(useref({}, lazypipe().pipe(sourcemaps.init, { loadMaps: true }))) .pipe(sourcemaps.write('maps')) .pipe(gulp.dest('dist')); });
Options
String
或Array
none
String
process.cwd()
Boolean
false
Boolean
false
String
none
Array<Stream>
none
gulp-useref
與預處理工具結合使用。例如,與TypeScript
一塊兒使用var ts = require('gulp-typescript'); // create stream of virtual files var tsStream = gulp.src('src/**/*.ts') .pipe(ts()); gulp.task('default', function () { // use gulp-useref normally return gulp.src('src/index.html') .pipe(useref({ additionalStreams: [tsStream] })) .pipe(gulp.dest('dist')); });
Function
none
var gulp = require('gulp'), useref = require('gulp-useref'); gulp.task('default', function () { return gulp.src('app/*.html') .pipe(useref({ transformPath: function(filePath) { return filePath.replace('/rootpath','') } })) .pipe(gulp.dest('dist')); });