2015-07-16 27 views
21

Domanda: Come posso scrivere il mio file gulp in ES6 modo da poter utilizzare al posto di importrequire e utilizzare la sintassi => sopra function()?È possibile scrivere un file gulp in es6?

Posso usare io.js o nodo qualsiasi versione.


gulpfile.js:

import gulp from "./node_modules/gulp/index.js"; 
gulp.task('hello-world', =>{ 
    console.log('hello world'); 
}); 

enter image description here

Errori:

import gulp from "./node_modules/gulp/index.js"; 
^^^^^^ 
SyntaxError: Unexpected reserved word 

gulp.task('hello-world', =>{ 
         ^^ 
SyntaxError: Unexpected token => 

All'interno del node_modules/gulp/bin/gulp.js ho cambiato la prima linea a #!/usr/bin/env node --harmony come richiesto in questo stack

+0

come accennato (ma non specificamente indicato nella risposta accettato di seguito) la sintassi corretta per il secondo esempio è 'gulp.task ('foo', () => {...}) 'questo dovrebbe funzionare in NodeJS 4 e 5 out of the box AFAIK. –

risposta

37

Sì, è possibile utilizzare babel.

Assicurati di avere l'ultima versione di gulp-cli.

npm install -g gulp-cli

Installare babele come dipendenza del progetto.

npm install --save-dev babel

Rinominare gulpfile.js-gulpfile.babel.js

tuo gulpfile potrebbe essere simile a questa:

import gulp from 'gulp'; 

gulp.task('default',() => { 
    // do something 
}); 

Aggiornamento per Babel 6.0+ Come correttamente rilevato dalla Eric Bronniman, ci sono un alcuni passaggi aggiuntivi coinvolti nel far funzionare questo con l'ultima versione di Babele.Qui ci sono tali istruzioni:

Anche in questo caso, fare in modo di avere l'ultima versione di gulp-cli
npm install -g gulp-cli

quindi installare sorso, nucleo babel, e i preset es2015
npm install --save-dev gulp babel-core babel-preset-es2015

Poi , aggiungere il seguente a un file .babelrc o alla vostra package.json

"babel": { 
    "presets": [ 
    "es2015" 
    ] 
} 

tuo 01.233.947,479 miladeve essere denominato gulpfile.babel.js

+1

Dopo aver fatto ciò, ho ricevuto "No gulpfile found" durante l'esecuzione di gulp. – onlywei

+0

@onlywei Assicurati di utilizzare la versione più recente di Gulp, che si trovi globalmente nel tuo sistema o localmente nel tuo progetto. – whirlwin

+4

In Babel 6.x, le funzionalità ES6 sono attivate. Vedi: https://github.com/gulpjs/gulp/issues/1375. La soluzione rapida consiste nell'installare i preset di es2015: "npm install --save-dev babel-preset-es2015" e aggiungere un pacchetto di configurazione babel a package.json. per esempio. "babele": { "presets": [ "es2015" ] } –

0

Se si sta utilizzando la versione più moderna del Gulp e del Gulp CLI, si può solo fare Gulpfile.babel.js e sarà capire e trasponi il tuo gulpfile ES6 con BabelJS di default.

E 'anche importante avere il transpiler BabelJS installato sotto devDependencies come è Gulp:

npm install --save-dev babel 

notare che a richiedere gulp in questo contesto, non si dispone di importare il index.js, si può solo anche:

import gulp from 'gulp'; 
+1

Dovresti avere babel nelle tue 'devDependencies' come' gulp'. – loganfsmyth

+0

@loganfsmyth Sembra non funzionare. Ho * "devDependencies": {"babel": "^ 6.5.2", "gulp": "github: gulpjs/gulp # 4.0", ...} * ma continua a visualizzare l'errore per "importare Gulp da "gulp" 'quando eseguo * gulp * dalla riga di comando. Il file si chiama * gulpfile.babel.js * too ... –

6

Nota ora è possibile utilizzare molte/molte funzioni di ES6 in Node.js v4.0.0 senza babel. Tuttavia apparentemente "import" non è ancora supportato. Vedere: https://nodejs.org/en/docs/es6/

Edit: La maggior parte delle caratteristiche ES6 popolari (tra cui destrutturazione e spread) sono supportati per impostazione predefinita in NodeJS 5.0 (vedi link qui sopra.) L'unica caratteristica mancante importante sembra essere moduli ES6 per quanto ne Posso dire.

+0

Per usare i moduli devi aggiungere il flag' --harmony_modules'. La destrutturazione è un'altra caratteristica popolare IMO che è ancora considerata "in corso" a partire da Nodejs v4.0.0. Esegui 'node --v8-options | grep "in progress" 'per vedere l'elenco completo. –

+0

Ouch, perché ho avuto downvoted? OP ha detto qualsiasi versione io.js o node.js. –

2

Io uso babel-node e nativo gulp.

  1. Installare babel e gulp come devDipendenze.
  2. Scrivere gulpfile.js con sintassi ES6.
  3. Utilizzare il comando ./node_modules/.bin/babel-node ./node_modules/.bin/gulp per eseguire sorso
  4. Nella sezione package.json scripts, è possibile saltare la prima parte ./node_modules/.bin/ - come babel-node ./node_modules/.bin/gulp.

Il vantaggio di questo appoach è, un giorno in cui i node.js supportano tutte ES6 dispone di un giorno, tutto ciò che serve di opt-out babel runtime è quello di sostituire babel-node con node. Questo è tutto.

+2

Un giorno in cui node.js supporterà tutte le funzionalità di ES6, babel supporterà tutte le funzionalità di ES7.:) –

+0

Penso che questo sia l'approccio migliore ma sacrifichi i vantaggi del cli, naturalmente potresti eseguire le attività dagli script di npm che puntano ai binari locali –

0

passi che ho seguito per sviluppare il codice per gulpfile in ES6:

  • npm install gulp && sudo npm install gulp -g.
  • Assicurati di utilizzare la versione aggiornata di Gulp. La versione corrente al momento della stesura di questa risposta era 3.9.1. Per controllare quale è installata la versione di gulp, tipo gulp -v
  • npm install babel-core babel-preset-es2015-without-strict --save-dev
  • Tipo touch .babelrc nel terminale
  • Nel file .babelrc, aggiungere questo codice

    { "presets": ["es2015-without-strict"] }

  • Creato il config gulp file con il nome gulpfile.babel.js

  • Voila !!! Ora puoi scrivere il codice di configurazione per gulp in ES6.

Fonte:Using ES6 with Gulp - Mark Goodyear

1

In sostanza, ciò che è necessario per l'installazione utilizzando npm è gulp, gulp-babel e babel-resent-env, aggiungere "env" per l'array .babelrc preset, e utilizzare un gulpfile.babel.js file.

npm install gulp-babel --save-dev 

Alcune delle risposte menzionati babel-core, babel-preset-es2015, ecc Il funzionario Babel setup guide con Gulp è quello di utilizzare gulp-babel solo, mentre gulp-babel ha moduli dipendenze tra babel-core quindi non è necessario installare separatamente.

Chi preimpostato, è necessario utilizzare un preset per fare Babel effettivamente fare qualcosa, che si chiama Preset Env che determina automaticamente il Babel plugin è necessario, sulla base di ambienti supportati.

npm install babel-preset-env --save-dev 

e in .babelrc file di

{ 
    "presets": ["env"] 
} 
Problemi correlati