2016-04-26 15 views
6

Ich versuche Quelldateien (und ihre Abhängigkeiten in node_module) zu haben, wenn AVA-Tests ausgeführt werden. Ich habe AVA konfiguriert babel-register zu verlangen und meine .babelrc Datei mit der in package.json folgenden erben:Verwendung von Babel-Register mit AVA und .babelrc `" ignore ": false`, aber node_modules werden nicht gesendet

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

und diese in .babelrc:

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

Ich habe a test spec that imports a source file mit und that source file imports an ES2015 dependency from node_modules:

jedoch , wenn ava ausgeführt wird, sehe ich:

/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 

Das sagt mir, dass die Quelldatei (src/app/utils.js) hat transpile, aber es ist die Abhängigkeit in node_modules (capitalize-string/index) nicht.

Sowohl die Quellenmodule und Abhängigkeiten transpile gut, wenn ich babel CLI verwenden, so scheint es wirklich, wie die .babelrc ‚s "ignore": false Einstellung ist nicht auf babel-register weitergegeben zu werden. Ich kann von den Babel-Dokumenten sehen, dass Sie explicitly pass an ignore option to babel-register können, aber ich sehe nicht, wie Sie das von der AVA-Konfiguration tun können. Ich habe sogar versucht die folgenden meiner Testdatei vor der Zeile hinzugefügt werden, wobei es die Quelldateien importiert, aber ich sehe immer noch den gleichen Fehler:

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

Ich nehme ich an einen transpile Schritt vor dem Test hinzufügen könnte, aber ich wollte Stellen Sie sicher, dass ich nicht nur einige AVA oder Babel-Konfiguration zuerst vermisste. in babel selbst

+0

Hast du irgendwelche Antworten gefunden? Ich habe ein ähnliches Problem. – alexeybondarenko

+0

Nein. Noch nicht. In diesem Fall habe ich mich entschieden, AVA nicht zu verwenden. –

Antwort

4

Dies bezieht dich auf Ausgabe - https://phabricator.babeljs.io/T6726

Aber Sie können babel-register benötigen in separater Datei (es lassen rufen .setup.js) setzen:

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

const noop = function() {}; 

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

Und dann "require": "babel-register" ändern "require": "./.setup.js"

+0

danke @floatdrop. Ich habe meine alte Filiale ausprobiert und dies versucht, und ich denke, es wurde dieses Problem behoben, da ich den obigen Fehler nicht mehr sehe. Allerdings bekomme ich jetzt andere Fehler. Ich habe AVA für dieses Projekt nicht mehr verwendet, und dieser Zweig ist jetzt so veraltet, dass ich einfach keine Zeit habe, es jetzt zum Laufen zu bringen. Wenn andere bestätigen können, dass dies für sie funktioniert, werde ich es als richtig markieren. –