2015-11-11 62 views
4

我嘗試編譯簡單es6文件,巴貝爾CLI

考慮下面的詳細信息:什麼錯?如何編譯與巴貝爾CLI文件

$ node --version 
v5.0.0 

$ npm --version 
3.3.6 

$ npm init 
$ npm install --save-dev babel-cli 

$ echo -e 'import url from "url"\nconsole.log(`2+2=${2+2}`)' > script.js 

$ ./node_modules/.bin/babel script.js 
import url from "url"; 
console.log(`2+2=${ 2 + 2 }`); 

換句話說:我把ES6和我出去ES6(儘管略有不同的間距,並添加分號)。我期待看到進口轉換爲需求,並看到我的back-ticks消失。

即:我想ES5出

什麼我需要做不同?

+0

什麼通天的版本?他們最近[徹底改變](https://babeljs.io/blog/2015/10/29/6.0.0/)是如何工作的 – Tyrsius

+0

爲了記錄在案,6.1(另一種說法是:上面顯示的命令是在我的問題發生時運行。) – Bosh

+0

每天都會多次詢問此問題。請使用搜索或至少瀏覽'babeljs'標籤(我也建議閱讀您添加的標籤的*標籤描述*) –

回答

8

通天版本6只船「沒有任何默認的轉換」。你可以閱讀更多的變化this blog post

要transpile ES6到ES5,你需要做到以下幾點:

  1. 運行npm i --save-dev babel-preset-es2015

  2. 創建.babelrc文件在你的項目的根有以下情況:

    {

    "presets": ["es2015"] 
    

    }

有很多的配置,你可以在此基礎之上做的,但應該ATLEAST讓你開始。

+0

太棒了 - 謝謝! – Bosh

+0

沒問題!當版本6發佈時,它們會變成同樣的東西。 – Nindaff

1

訣竅:需要通過--presets "es2015"作爲參數傳遞給巴貝爾。

如:

$ ./node_modules/.bin/babel --presets "es2015" script.js 
"use strict"; 

var _url = require("url"); 

var _url2 = _interopRequireDefault(_url); 

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 

console.log("2+2=" + (2 + 2));