前言
相信各位使用 Gulp
時都會搭配 gulp-concat
合併檔案,但如果是 JS
要 import
其他檔案(ex: JS、JSON) 就不能用 gulp-concat
合併而已,因為這樣會在使用的時候,出現 xxx(import 進來的變數宣告) is not defined。
gulp-concat
只是純粹合併檔案,沒有包括 ES6
的解析功能,所以若是不加以處理的話,會在合併過後的 JS
檔依舊出現 import xxx from '../data.js'
這樣的程式碼哩。
安裝套件
輸入以下安裝代碼
1 2 3
| npm install browserify -S npm install vinyl-source-stream -S npm install vinyl-buffer -S
|
並在 gulp.js
添加任務
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| var browserify = require('browserify'); var stream = require('vinyl-source-stream'); var buffer = require('vinyl-buffer');
gulp.task('browserify', () => browserify('./src/js/main.js') .bundle() .pipe(stream('main.js')) .pipe(buffer()) .pipe(gulp.dest('./dist/js')) .pipe(browserSync.stream()) );
gulp.task('cleanJs', () => gulp.src(['./src/js/main.js', './src/js/main.js.map'], { read: false, allowEmpty: true }) .pipe($.clean()) );
gulp.task('build', gulp.series( 'js', 'browserify', 'cleanJs', ) )
gulp.task('default', gulp.series( 'js', 'browserify', 'cleanJs', function (done) { browserSync.init({ server: { baseDir: "./dist" }, reloadDebounce: 2000 }); gulp.watch(['./src/js/**/*.js', '!./src/js/main.js', '!./src/js/main.js.map'], gulp.series('js', 'browserify', 'cleanJs')); done(); } ) )
|
測試
接下來在就可以在個別的 JS
檔中使用 import
、export
功能
ex: 在 all.js
中引入 json
檔
1 2 3 4 5
| import languageData from '../data/language.json'; (function($) { console.log(languageData); })(jQuery);
|
執行 gulp
後即可看到 import
進來的 json 資料,同理也可使用在 js
的 modules function
上。
參考資料
在 Gulp 中使用 Browserify
gulp + browserify 搭建es6环境