2016-04-26 36 views
6

Sto provando ad avere transpiled i file di origine (e le loro dipendenze in node_modules) durante l'esecuzione dei test AVA. Ho configurato AVA per richiedere babel-register e ereditare il mio file .babelrc con il seguente in package.json:Uso di babel-register con AVA e .babelrc's "" ignore ": false`, ma node_modules non vengono transpiled

"ava": { 
    "require": "babel-register", 
    "babel": "inherit" 
    } 

e questo in .babelrc:

{ 
    "presets": [ "es2015" ], 
    "ignore": false 
} 

devo a test spec that imports a source file con e that source file imports an ES2015 dependency from node_modules:

Tuttavia , quando è in esecuzione ava Vedo:

/Users/me/code/esri-rollup-example/node_modules/capitalize-word/index.js:2 
export default input => input.replace(regexp, match => match.charAt(0).toUpperCase() + match.substr(1)); 
^^^^^^ 

SyntaxError: Unexpected token export 

Il che indica che il file di origine (src/app/utils.js) ha eseguito il transpile, ma la sua dipendenza in node_modules (capitalize-string/index) no.

Entrambi i moduli di origine e le dipendenze transpile bene quando uso babele CLI, così sembra davvero come "ignore": false impostazione s' il .babelrc non è sempre passato a babel-register. Posso vedere dai documenti babel che puoi explicitly pass an ignore option to babel-register, ma non vedo come puoi farlo dalla configurazione AVA. Ho anche provato ad aggiungere il seguente al mio file di prova prima della riga in cui si importa i file di origine, ma vedo ancora lo stesso errore:

require("babel-register")({ 
    ignore: false 
}); 

Suppongo che potrei aggiungere un passaggio transpile prima del test, ma volevo assicurati che prima non mi mancassero alcune configurazioni di AVA o babel.

+0

Hai trovato qualche risposta? Ho un problema simile. – alexeybondarenko

+0

No. Non ancora. In questo caso, ho scelto di non utilizzare AVA per ora. –

risposta

4

Questo è legato ad emettere in babel per sé - https://phabricator.babeljs.io/T6726

Ma si può mettere babel-register richiedono in file a parte (per non chiamarla .setup.js):

require('babel-register')({ 
    ignore: /node_modules\/(?!capitalize\-word)/i 
}); 

const noop = function() {}; 

require.extensions['.css'] = noop; // If you want to ignore some CSS imports 

E poi cambiare "require": "babel-register"-"require": "./.setup.js"

+0

grazie @floatdrop. Ho verificato che il mio vecchio ramo ha provato questo problema e ho risolto il problema, poiché non vedo più l'errore sopra riportato. Tuttavia, ottengo altri errori ora. Sono passato dall'utilizzo di AVA a questo progetto e quel ramo è così obsoleto ora, che non ho il tempo di farlo funzionare in questo momento. Se altri possono verificare che questo funzioni per loro, lo contrassegnerò corretto. –