(6) Gulp-babel

什麼是 babel

使用babel套件,可以將 一些新的js語法,如箭頭函式、let、const,編譯為舊版瀏覽器看得懂的語法。

安裝套件

1
2
3
npm install --save-dev gulp-babel @babel/core @babel/preset-env
npm install --save gulp-sourcemaps //壓縮後,可標記原始碼位置
npm install --save gulp-concat //合併程式碼用

在 gulpfile.js 中引入任務

1
2
3
4
5
6
7
8
9
function babel(){
return gulp.src('./source/js/**/*.js')
.pipe($.plumber())
.pipe($.babel({
presets: ['@babel/env']
}))
.pipe($.concat('all.js'))
.pipe(gulp.dest('./public/js'))
}

函式中,我們指定source資料夾裡的 js檔案進行用babel編譯,
並用concat套件將多支js檔案在輸出時合併成一支,最後用dest輸出到public資料夾。

sourcemap套件

因為多支js檔案,最後會被編譯成同一支js。為了在最終編譯的js中,查找原先程式碼的位置,可以使用 sourcemap套件。

1
2
3
4
5
6
7
8
9
10
11
function babel(){
return gulp.src('./source/js/**/*.js')
.pipe($.plumber())
.pipe($.sourcemaps.init())
.pipe($.babel({
presets: ['@babel/env']
}))
.pipe($.concat('all.js'))
.pipe($.sourcemaps.write('.'))
.pipe(gulp.dest('./public/js'))
}

sourcemaps

sourcemap 除了js檔案以外,也可以用在如scss檔案

scss-source