2016-04-26 10 views
6

AVA testlerini çalıştırırken kaynak dosyalarının (ve bunların node_modules'deki bağımlılıkları) aktarılmaya çalışıyorum.AVA ve .babelrc'nin "yoksayma" ile babel-register'in kullanılması: false ', ancak node_modules transpiled edilmiyor

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

ve bu .babelrc yılında: Ancak

:

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

Birlikte a test spec that imports a source file ve that source file imports an ES2015 dependency from node_modules var ben AVA babel-register gerektirmez ve package.json aşağıdaki benim .babelrc dosyayı devralmak için yapılandırılmış ettik ava'u çalıştırırken, bkz.

/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 

Kaynak dosyanın (src/app/utils.js) aktarıldığını, ancak node_modules (capitalize-string/index) 'da bağımlılığın olmadığını belirtiyor. Ben babel CLI kullandığınızda

Hem kaynak modülleri ve bağımlılıkları ince transpile, yani gerçekten babel-register geçirilen almıyor .babelrc 'ın "ignore": false ayarı gibi görünüyor. Babil belgelerinden explicitly pass an ignore option to babel-register yapabildiğinizi görebiliyorum, ancak bunu AVA yapılandırmasından nasıl yapabileceğinizi göremiyorum. Hatta bu kaynak dosyalarını alır satırdan önce benim test dosyasına aşağıdaki ekleyerek çalıştı, ama hala aynı hatayı bkz: Ben deneyden önce bir transpile adım eklemek herhalde

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

ama istediğim önce sadece bazı AVA veya babel konfigürasyonunu kaçırmadım.

+0

Herhangi bir cevap buldunuz mu? Benzer bir sorunum var. – alexeybondarenko

+0

Hayır. Henüz değil. Bu durumda, şimdilik sadece AVA kullanmamayı seçtim. –

cevap

4

Bu babel kendisinde çıkarmaya ilişkilidir - (let .setup.js diyoruz) https://phabricator.babeljs.io/T6726

Ama babel-register koyabilirsiniz ayrı dosyada gerektirir:

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

const noop = function() {}; 

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

Ve sonra değiştirmek "require": "babel-register""require": "./.setup.js" için

+0

teşekkürler @floatdrop. Eski şubemden bunu denedim, ve yukarıdaki hatayı görmediğim için bu sorunu düzelttim. Ancak, şimdi başka hatalar alıyorum. Bu projede AVA kullanmamaya devam ettim ve şu an bu şube şu an çok güncel değil, şu an çalışmam için zamanım yok. Diğerleri bunun için uygun olduğunu doğrulayabilirlerse, doğru olarak işaretlerim. –

İlgili konular