2017-02-02 68 views
0

英語不是我的母語,請原諒輸入錯誤。如果NodeJS受支持,Babel不會轉換爲ES5

NodeJS LTS現在是4.x和6.x,它是ES6語法的一部分,僅在6.x,node.green中受支持。

我有一個後端Node項目需要現在支持Node 4.x版本,但我必須使用一些只能在6.x版本中工作的語法。所以我用preset-es2015介紹了Babel。但是通過這個預設,Babel從ES6轉換爲ES5。

ES6的語法部分,如const,let的性能要高於var(這是一個假設,實際情況當然不是那麼簡單)。

我的代碼在節點6.x的99%或節點4.x的57%的ES6支持上運行,實際上並不需要將所有代碼降級到ES5。

所以我想知道如何讓Babel不要將ES6語法轉換成ES5,如果NodeJS被支持的話。

此外,Babel支持檢測當前操作環境的代碼並對其進行智能轉換嗎?

謝謝。

更新:babel-preset-env是我想要的。

回答

2

babel-preset-env使您能夠針對特定節點(或瀏覽器)的版本。即不支持該版本支持的功能。例如:

{ 
    "presets": [ 
    ["env", { 
     "targets": { 
     "node": 4 
     } 
    }] 
    ] 
} 

此外,不支持巴別檢出代碼支持的當前操作環境和智能地將其轉換?

Transpilation通常是離線,之前在目標環境中執行代碼,所以這是不是真的有可能。

+0

謝謝你的回答。 ['babel-preset-env'](https://github.com/babel/babel-preset-env)就是我想要的。我有測試,它運行良好。謝謝。 –

0

如果您想將ES6編譯爲ES5,則需要安裝Babel ES2015預設。

npm install babel-preset-es2015 

然後您需要啓用此預設。啓用此ES6到ES5編譯的方法是使用巴貝爾裝載機查詢字符串:

module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     loader: 'babel-loader?presets[]=es2015' 
     } 
    ] 
    } 

或查詢選項:

module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     loader: 'babel-loader', 
     query: { 
      presets: ['es2015'] 
     } 
     } 
    ] 
    } 
+0

謝謝你的回答。但我已經使用'preset-es2015',並且不希望Babel將所有代碼轉換爲ES5。 –

+0

什麼讓你認爲OP使用的是webpack?你至少應該提到你的例子是用於webpack的。 –

相關問題