2015-12-16 46 views
2

根據這一主旨這裏 https://gist.github.com/ryanflorence/daafb1e3cb8ad740b346如何讓Babel使用webpack風格的'modulesDirectories'進行編譯?

我能夠使用的WebPack的「resolve.modulesDirectories」建立一個很酷的文件夾結構爲一個相當複雜的應用程序 - 我可以通過模塊式進口引用共享組件:

import MyModule from 'modules/MyModule'; 

該文件是在

src/app/modules/Foo/modules/Bar/modules/Baz/component.jsx 

和MyModule的是

src/app/shared/modules/MyModule 

麻煩的是,當我嘗試運行測試

mocha --compilers js:babel-core/register $(find src/app -name *.test.jsx) 

巴貝爾編譯器會引發說,它不能找到 '模塊/ MyModule的' 什麼...

是在Babel編譯器配置中有沒有類似於Webpack的'modulesDirectories'?

回答

1

您應該能夠使用巴貝爾的resolveModuleSource選項基本上重寫進口路徑,但你需要使用編程API來做到這一點。因此,不要使用Mocha的--compilers選項,請使用--require加載調用Babel的require hook並通過resolveModuleSource選項的腳本。如果您使用巴貝爾6版使用babel-register包,它會是這個樣子:

require("babel-register")({ 
    resolveModuleSource: function (source, filename) { 
    return filename.replace(/^modules\/.+/, "/abs/path/to/src/app/shared/$0"); 
    }, 
}); 
+0

有沒有辦法做到這一點,當你在不同的地方有N個共享文件夾? – MoeSattler

+0

@Moezalez我不確定你描述的是什麼情況。你能評論一下嗎?如果不是這樣,可能會更詳細地提出它作爲自己的問題。 – JMM

+0

查看這裏的'shared'文件夾:https://gist.github.com/ryanflorence/daafb1e3cb8ad740b346 – MoeSattler

相關問題