2017-02-02 3 views
0

Englisch ist nicht meine Muttersprache, bitte entschuldigen Sie Tippfehler.Babel konvertieren nicht zu ES5, wenn NodeJS unterstützt wird

NodeJS LTS jetzt 4.x und 6.x, das Teil der ES6-Syntax ist, wird nur in 6.x, node.green unterstützt.

Ich habe ein Back-End-Node-Projekt muss jetzt die Node 4.x-Version unterstützen, aber ich muss einige Syntax nur in 6.x-Version gearbeitet. Also habe ich Babel mit preset-es2015 vorgestellt. Aber mit dieser Voreinstellung verwandelt sich Babel von ES6 zu ES5.

ES6 Teil der Syntax, wie const, let die Leistung ist höher als var (Dies ist eine Hypothese, die tatsächliche Situation sicherlich nicht so einfach).

Mein Code läuft auf ES6-Unterstützung bei 99% von Node 6.x oder 57% von Node 4.x, es ist wirklich nicht notwendig, den gesamten Code auf ES5 herunterzustufen.

Also ich würde gerne wissen, wie Babel nicht ES6-Syntax in ES5 konvertieren kann, wenn NodeJS unterstützt wird.

Unterstützt Babel außerdem die Erkennung von Code für die aktuelle Betriebsumgebung und die intelligente Konvertierung?

Vielen Dank.

UPDATE: babel-preset-env ist was ich will.

Antwort

2

babel-preset-env können Sie gezielt einen bestimmten Knoten (oder Browser) Version. I.e. Funktionen, die von dieser Version unterstützt werden, werden nicht transpiliert. Beispiel:

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

Ferner muss Babel Unterstützungscode-Unterstützung für die aktuelle Betriebsumgebung Erfassen und Umwandeln intelligent?

Transpilation ist in der Regel offline, vor der Code in der Zielumgebung ausgeführt wird, so dass nicht wirklich möglich ist.

+0

Vielen Dank für die Antwort. ['babel-preset-env'] (https://github.com/babel/babel-preset-env) ist was ich will. Ich habe Test, und es hat gut funktioniert. Vielen Dank. –

0

Wenn Sie ES6 to ES5 kompilieren möchten, müssen Sie das Babel ES2015-Preset installieren.

npm install babel-preset-es2015 

Dann müssen Sie diese Voreinstellung aktivieren. Eine Möglichkeit, diese ES6 zu ES5 Kompilation zu ermöglichen verwendet babel-loader Query-String:

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

oder Abfrageoption:

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

Vielen Dank für die Antwort. Aber ich habe 'preset-es2015' verwendet und möchte nicht, dass Babel den gesamten Code in ES5 konvertiert. –

+0

Was lässt Sie glauben, dass das OP Webpack verwendet? Sie sollten zumindest erwähnen, dass Ihr Beispiel für das Webpack ist. –

Verwandte Themen