2017-07-30 466 views
0

我想在我的前端開發中使用ES2016的功能。特別是importdecorators對我來說很有意思。進口前端開發

我已經開始了一個小測試項目,並創建了一些包含import的類的不同文件。 Babel生成正確的文件,但包含一個require聲明,該聲明在瀏覽器中不起作用(據我所知)。

是否有任何好的工具可以將所有文件連接成按他們的要求排序的單個JavaScript文件?或者一些圖書館爲我做這些?

+0

什麼模塊捆綁工具(gulp/webpack/etc)你使用? –

+0

@MaximKuzmin現在吞嚥,我想留在這。我不想重寫我所有的建築腳本,但如果沒有好的圖書館,我會改變 –

回答

2

由於Babel將您的ES2016代碼轉換爲CommonJS格式,因此瀏覽器不支持它。您需要創建捆綁一些模塊捆綁,可以在瀏覽器中使用:

  • Browserify
  • 的WebPack
  • 彙總

gulp構建與gulp-rollup

// setup by `npm i gulp gulp-rollup rollup-plugin-babel babel-preset-es2016 babel-plugin-external-helpers --save-dev` 

// gulpfile.js 
var gulp  = require('gulp'), 
    rollup  = require('gulp-rollup'); 

gulp.task('bundle', function() { 
    gulp.src('./src/**/*.js') 
    // transform the files here. 
    .pipe(rollup({ 
     // any option supported by Rollup can be set here. 
     "format": "iife", 
     "plugins": [ 
     require("rollup-plugin-babel")({ 
      "presets": [["es2016", { "modules": false }]], 
      "plugins": ["external-helpers"] 
     }) 
     ], 
     entry: './src/main.js' 
    })) 
    .pipe(gulp.dest('./dist')); 
}); 
+0

@ pablo-christiano obviousely你應該使用https://www.npmjs.com/package/babel-preset-es2016而不是babel-preset-es2015 –

+0

剛更新的答案 –

+0

感謝您的幫助!這看起來正是我所需要的。我是新來的babel。如果我使用'stage-2'預設和'transform-decorators-legacy'插件,會不會有衝突? –