2017-02-02 5 views
0

Английский не мой родной язык, пожалуйста, извините ошибки ввода.Babel не конвертируется в ES5, если NodeJS поддерживается

NodeJS LTS теперь 4.x и 6.x, который является частью синтаксиса ES6, поддерживается только в 6.x, node.green.

У меня есть проект со вспомогательным узлом, который теперь должен поддерживать версию Node 4.x, но я должен использовать некоторый синтаксис, который работал только в версии 6.x. Поэтому я представил Babel с preset-es2015. Но с этой предустановкой Babel превращается из ES6 в ES5.

ES6 часть синтаксиса, такая как const, let производительность выше, чем var (это гипотеза, реальная ситуация, конечно, не так проста).

Мой код работает под управлением ES6 на 99% от Node 6.x или 57% от Node 4.x, на самом деле не нужно понижать весь код до 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. –

 Смежные вопросы

  • Нет связанных вопросов^_^