目前我可以这样做:
require('./frontend/src/components/SomeComponent');
但是,如果我在webpack.config.js
中设置以下内容:
resolve: {
root: path.resolve('frontend', 'src')
}
我可以改为:
require('components/SomeComponent');
问题是,当我不使用Webpack(例如在测试环境中)时,我的所有导入都会中断。根据Babel文档,sourceRoot
属性设置了“所有来源都是相对的根”。这让我觉得我可以将以下内容添加到我的.babelrc
来修复我的导入:
"sourceRoot": "frontend/src"
......但没有这样的运气。当我在require('components/SomeComponent');
中babel-node
时失败。当我只使用Babel来转换文件时,无论我是否设置require
,sourceRoot
行都是相同的。
所以,我的问题是,是否有任何方式(有或没有sourceRoot
)来模拟Babel中的webpack resolve.root
?
P.S。我知道有几个Babel插件可以解决这个问题,但是我看到的所有插件都要求你在~
路径中添加require
(这当然会破坏Webpack中的导入)
答案 0 :(得分:1)
许多项目都有webpack + babel,在许多项目中,你有时会绕过webpack(就像你的情况一样 - 用于测试)。
在这种情况下,所有解析别名都应该存在于babel中。
有插件允许一个读取另一个的配置(以及类似的插件等)。