iT邦幫忙

0

Gulp bower(2) DAY86

今天要來介紹 gulp 如何與 bower 結合

這裡必須新增一個套件 main-bower-files

https://www.npmjs.com/package/main-bower-files

那如何安裝呢??

npm install main-bower-files --save
var mainBowerFiles = require('main-bower-files');
gulp.task('bower', function() {
    return gulp.src(mainBowerFiles())
        .pipe(gulp.dest('./.tmp/vendors'))
});
gulp.task('default',['jade','sass','babel','bower','watch']);

這時候輸入 gulp
就會發現成功啦~~
https://ithelp.ithome.com.tw/upload/images/20201124/2012303923YiG5h0NO.jpg
不過 實際上
我們應該放在 public 此資料夾內

那要怎麼做呢??
讓我們繼續看下去~~


Gulp 與 Bower 程式碼串接

現在我們要把外部載近來的 js檔案合併
並放在 public資料夾下的js資料夾

gulp.task('vendorJS',function(){
    return gulp.src('./.tmp/vendors/**/**/*.js')
        .pipe($.concat('vendors.js'))
        .pipe(gulp.dest('./public/js'))
});

gulp.task('default',['jade','sass','babel','bower','vendorJS','watch']);

不過這裡其實流程是錯誤的

可以嘗試把 .tmp資料夾 與 public資料夾刪除
並再次輸入 gulp
會發現public/js 竟然沒有vendors.js 這支檔案
再次輸入gulp
它才會出現

為什麼呢???
因為 bower 在把檔案拉進來的時候
它的下一個排程 就開始運作了
那要怎麼解決呢??

// 在執行 vendorJS 前,必須先執行 bower  
gulp.task('vendorJS',['bower'],function(){
    return gulp.src('./.tmp/vendors/**/**/*.js')
        .pipe($.concat('vendors.js'))
        .pipe(gulp.dest('./public/js'))
});

// 這裡要把 bower 刪除
gulp.task('default',['jade','sass','babel','vendorJS','watch']);

這裡再補充一下
並非所有套件對於 bower 的取用都那麼的友善
ex: Vue.js
他不會正確取得 dist 資料夾內的 vue.js

先安裝

bower install vue --save

再加入

"overrides": {
            "vue": {                       
                "main": "dist/vue.js"     
            }
        }

加入畫面:

gulp.task('bower', function() {
    return gulp.src(mainBowerFiles({
        "overrides": {
            "vue": {                       
                "main": "dist/vue.js"     
            }
        }
    }))
        .pipe(gulp.dest('./.tmp/vendors'))
});

另外
外部載入的套件如果需要排序
可以利用 gulp-order 此套件

npm install gulp-order --save

透過陣列排列自己所需要的順序

gulp.task('vendorJs', ['bower'], function(){
  return gulp.src(['./.tmp/vendors/**/**.js'])
    .pipe($.order([
      'jquery.js',
      'bootstrap.js'
    ]))
    .pipe($.concat('vendor.js'))
    .pipe(gulp.dest('./public/javascripts'))
})

那今天的介紹就到這裡
若有任何問題 或 內容有誤
都可以跟我說唷/images/emoticon/emoticon41.gif


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言